无法显示Java2D负位置,将原点移动到左下角

时间:2011-09-23 05:54:57

标签: java graphics java-2d

我正在尝试在Graphics2D的坐标系上绘制线条。但是,我发现负面区域的在线部分无法显示。无论如何我可以看到负面区域的线条?

另外,无论如何我可以将y轴的直接从下向上转换为向上吗?

Graphics2D g2 = (Graphics2D) g;
g2.scale(1, -1);
g2.translate(0, -HEIGHT);

无法工作。对象消失。

谢谢!

2 个答案:

答案 0 :(得分:2)

啊,您正在使用HEIGHT属性。您应该使用getHeight()


以下代码生成此屏幕截图(g2.drawLine(0, 0, 100, 100)):

screenshot

代码:

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 - CoordinatesGraphics2D API

您可以通过继承Graphics2D并自己完成这些翻译来实现您想要的目标。