Java 固定原点图
我正在用swing绘制一个图形,我想设置一个固定的原点,也就是说,当我缩放图形时,只更新轴的水平和垂直标签。 以下是我到目前为止所拥有的:Java 固定原点图,java,swing,graph,Java,Swing,Graph,我正在用swing绘制一个图形,我想设置一个固定的原点,也就是说,当我缩放图形时,只更新轴的水平和垂直标签。 以下是我到目前为止所拥有的: protected void drawAxis(Graphics2D g2) { double axisH = yPositionToPixel(originY); double axisV = xPositionToPixel(originX); g2.drawLine(0, (int) axisH, getWidth(), (i
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);
}
例如,当我缩放时,原点被重新计算,因此图形正在从其原始位置移动。
谢谢您的帮助。假设您的原点位于图形空间中的点
(原点,原点)
,但位于屏幕空间中的点(像素原点,原点)
。然后应用以下转换:
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,高度)
,您将得到您的方程式。因此,我假设您的原点不在(0,0)
,因此您必须在屏幕空间中定义原点的附加点。假设您的原点在图形空间中的(originX,originY)
,但在屏幕空间中定义(像素原点,像素原点)
。然后应用以下转换:
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,高度)
,您将得到您的方程式。因此,我假设您的原点不在(0,0)
,因此您必须在屏幕空间中定义原点所在的附加点