Отрицательная позиция Java2D не может быть отображена, переместить начало координат внизу слева - PullRequest
2 голосов
/ 23 сентября 2011

Я пытаюсь нарисовать линии в системе координат в Graphics2D. Тем не менее, я обнаружил, что часть на линии в отрицательной области не могут быть показаны. Могу ли я сделать так, чтобы линии в отрицательной зоне были видны?

Кроме того, можно ли в любом случае преобразовать прямую ось Y из нисходящей в восходящую?

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

Не могу работать. Объект исчезает.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 23 сентября 2011

Ах, вы используете атрибут 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 голос
/ 23 сентября 2011

Насколько я понимаю, в Java2D нельзя использовать отрицательные координаты. Вы всегда работаете в так называемом «Пространстве пользователя» в Java2D. Координаты перевода вашей позиции в «Пространство устройства» могут быть отрицательными, но это невидимо для вас в Java. См. Также Учебник Java2D - Координаты и Graphics2D API .

Возможно, вы сможете достичь того, чего хотите, подклассом Graphics2D и выполнить перевод сами.

...