gpt4 book ai didi

java - 具有固定原点的图形

转载 作者:太空宇宙 更新时间:2023-11-04 08:40:09 27 4
gpt4 key购买 nike

我正在用 swing 绘制一个图表,我想设置一个固定的原点,即当我缩放图表时,仅更新轴的水平和垂直标签。这是我到目前为止所拥有的:

protected void drawAxis(Graphics2D g2) {
double axisH = yPositionToPixel(originY);
double axisV = xPositionToPixel(originX);

g2.drawLine(0, (int) axisH, getWidth(), (int) axisH);
g2.drawLine((int) axisV, 0, (int) axisV, getHeight());
}

protected double yPositionToPixel(double position) {
double height = (double) getHeight();
return height - ((position) * (height) / (maxY));
}

protected double xPositionToPixel(double position) {
return (position) * (double) getWidth() / (maxX);
}

例如,当我缩放时,会重新计算原点,因此图形会从其原始位置移动。感谢您的帮助。

最佳答案

假设您的原点位于图形空间中的点 (originX,originY),但位于屏幕空间中的点 (pixelOriginY,pixelOriginX)。然后应用以下转换:

protected double yPositionToPixel(double position) {
double height = (double) getHeight();
return pixelOriginY - (position-originY) / (maxY-originY) * (height-pixelOriginY);
}

protected double xPositionToPixel(double position) {
double width = (double) getWidth();
return pixelOriginX + (position-originX) / (maxX-originX) * (width-pixelOriginX);
}

如果您在屏幕上将原点设置为 (0,0)(0,height),您将得到方程。因此,我假设您的原点不在 (0,0) 处,因此您必须定义这个附加点,您的原点应位于屏幕空间中。

关于java - 具有固定原点的图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5506542/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com