Не может провести тонкие линии с Java2D

Я пытаюсь потянуть полигон со штрихом 1 пикселя. Поскольку весь полигон масштабируется 100, я установил ширину строки на 0,01. По некоторым причинам, хотя, полигон оттянут с экранной шириной строки того, что надеется быть 100 пикселей вместо 1.

Я использую GeneralPath как форма полигона. Тонкие строки действительно становятся оттянутыми, если я использую тот же подход для рисования Line2D формы.

g2d.scale(100, 100);
g2d.setStroke(new BasicStroke(0.01f));
g2d.draw(theShape);

Новая информация: Если я удаляю setStroke строку, я правильно получаю строку на 2 пикселя, так как BasicStroke 0.02f был установлен на объекте Graphics2D ранее.

Это - реальная setStroke строка

g.setStroke(new BasicStroke((float) (1f / getRoot().scaleX)));
5
задан Bill the Lizard 18 July 2010 в 13:30
поделиться

2 ответа

Следующий код производит вывод, показанный ниже. У вас должна быть ошибка в другом месте вашего кода. Возможно, еще один вызов шкалы , который вы пропустили в своем вопросе:

import java.awt.*;

public class FrameTest {
    public static void main(String[] args) throws InterruptedException {

        JFrame f = new JFrame("Demo");
        f.getContentPane().setLayout(new BorderLayout());    
        f.add(new JComponent() {
            public void paintComponent(Graphics g) { 
                Graphics2D g2d = (Graphics2D) g;

                GeneralPath theShape = new GeneralPath();
                theShape.moveTo(0, 0);
                theShape.lineTo(2, 1);
                theShape.lineTo(1, 0);
                theShape.closePath();

                g2d.scale(100, 100);
                g2d.setStroke(new BasicStroke(0.01f));
                g2d.draw(theShape);
            }
        });

        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setSize(300, 300);
        f.setVisible(true);
    }
}

enter image description here

5
ответ дан 14 December 2019 в 13:27
поделиться

Не знаю почему, но теперь это работает.

1
ответ дан 14 December 2019 в 13:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: