gpt4 book ai didi

java - 不能用Java2D画细线

转载 作者:搜寻专家 更新时间:2023-10-31 19:58:46 25 4
gpt4 key购买 nike

我正在尝试绘制一个笔划为 1 像素的多边形。因为整个多边形被缩放了 100,所以我将线宽设置为 0.01。但出于某种原因,绘制多边形时屏幕上的线宽看起来是 100 像素而不是 1。

我使用 GeneralPath 作为多边形。如果我使用相同的方法绘制 Line2D 形状,确实会绘制出细线。

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

新信息:如果我删除 setStroke 线,我会正确地得到一条 2 像素的线,因为之前在 Graphics2D 对象上设置了 0.02f 的 BasicStroke。

这才是真正的setStroke线

g.setStroke(new BasicStroke((float) (1f / getRoot().scaleX)));

最佳答案

以下代码生成如下所示的输出。您的代码中的其他地方一定有错误。也许您在问题中省略了对 scale 的另一个调用:

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

关于java - 不能用Java2D画细线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2974178/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com