我正在使用Java2d开发一个应用程序。我注意到的奇怪之处在于,原点位于左上角,正x向右,正y向下增加。
有没有办法将原点左下方移动?
谢谢。
答案 0 :(得分:4)
您将需要进行缩放和翻译。
在您的paintComponent
方法中,您可以执行此操作:
public void paintComponent(Graphics g)
{
Graphics2D g2d = (Graphics2D) g;
g2d.translate(0, -height);
g2d.scale(1.0, -1.0);
//draw your component with the new coordinates
//you may want to reset the transforms at the end to prevent
//other controls from making incorrect assumptions
g2d.scale(1.0, -1.0);
g2d.translate(0, height);
}
我的Swing有点生疏,但这应该可以完成任务。
答案 1 :(得分:2)
我们可以使用以下方法轻松解决问题,
public void paintComponent(Graphics g)
{
Graphics2D g2d = (Graphics2D) g;
// Flip the sign of the coordinate system
g2d.translate(0.0, getHeight());
g2d.scale(1.0, -1.0);
......
}
答案 2 :(得分:0)
您是否尝试过Graphics2D.translate()?
答案 3 :(得分:0)
你会想要习惯它。就像卢克提到的那样,从技术上讲,你可以将变换应用于图形实例,但最终会对性能产生负面影响。
只需进行平移就可以将0,0的位置移动到左下角,但沿正轴的移动仍然在x方向上向右移动,在y方向向下移动,所以你要做的唯一事情就是绘制屏幕外的一切。你需要做一个旋转来完成你所要求的,这会将弧度计算的开销增加到图形实例的变换矩阵。这不是一个很好的权衡。
答案 4 :(得分:0)