gpt4 book ai didi

Java Graphics.drawLine() 不精确 : drawn lines are too long

转载 作者:行者123 更新时间:2023-11-30 03:32:45 25 4
gpt4 key购买 nike

我有一个顶点为 (0,0)、(100,0)、(100,100) 和 (0,100) 的多边形。我调试了程序,这些正是 java 正在绘制的线条。有些线条太长一个像素,而不是绘制一个精确的正方形:
http://gyazo.com/7418546c51c9a10fc690b18afcc96360.png
(绿色圆圈只是我测试质心)。当我将正方形移出角落时,您可以看到左上角是唯一完全正确的角。为什么会发生这种情况?在绘制线之前,我将这些线转换为整数坐标后写入控制台,它们是正确的。所以除了drawLine函数之外我看不出什么可能是错误的。画线:

        g.drawLine((int) line.getStart().getX(), (int) line.getStart().getY(), 
(int) line.getEnd().getX(), (int) line.getEnd().getY());

该线有一个起始 vector 和一个结束 vector 。 vector 包含 x 和 y。

即使这样做:

    g.drawLine(0, 0, 100, 0);
g.drawLine(100, 0, 100, 100);
g.drawLine(100, 100, 0, 100);
g.drawLine(0, 100, 0, 0);

它仍然产生相同的结果。但这是有效的:

    g.drawLine(0, 0, 100, 0);
g.drawLine(101, 0, 101, 100);
g.drawLine(100, 101, 0, 101);
g.drawLine(0, 100, 0, 0);

最佳答案

您提供的示例正在运行:

    BufferedImage bi = new BufferedImage(200, 200, BufferedImage.TYPE_INT_ARGB);
Graphics g = bi.getGraphics();
g.fillRect(0, 0, bi.getWidth(), bi.getHeight());
g.setColor(Color.red);
g.translate(50, 50);
g.drawLine(0, 0, 100, 0);
g.drawLine(100, 0, 100, 100);
g.drawLine(100, 100, 0, 100);
g.drawLine(0, 100, 0, 0);
JOptionPane.showMessageDialog(null, new ImageIcon(bi));
<小时/>

有一个错误 https://bugs.openjdk.java.net/browse/JDK-8049901这描述了一个可能的问题。

关于Java Graphics.drawLine() 不精确 : drawn lines are too long,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28640568/

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