我正在尝试在Graphics2D的坐标系上绘制线条。但是,我发现负面区域的在线部分无法显示。无论如何我可以看到负面区域的线条?
另外,无论如何我可以将y轴的直接从下向上转换为向上吗?
Graphics2D g2 = (Graphics2D) g;
g2.scale(1, -1);
g2.translate(0, -HEIGHT);
无法工作。对象消失。
谢谢!
答案 0 :(得分:2)
啊,您正在使用HEIGHT
属性。您应该使用getHeight()
。
以下代码生成此屏幕截图(g2.drawLine(0, 0, 100, 100)
):
代码:
public static void main(String[] args) throws Exception {
JFrame frame = new JFrame("Test");
frame.add(new JComponent() {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g.create();
{
g2.translate(0, getHeight() - 1);
g2.scale(1, -1);
g2.drawLine(0, 0, 100, 100);
}
g2.dispose();
}
});
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 300);
frame.setVisible(true);
}
答案 1 :(得分:1)
据我所知,Java2D你不能使用负坐标。您始终在Java2D中的所谓“用户空间”中运行。 “设备空间”中位置的平移坐标可能是负数,但在Java中这是不可见的。另请参阅Java2D Tutorial - Coordinates和Graphics2D API。
您可以通过继承Graphics2D并自己完成这些翻译来实现您想要的目标。