gpt4 book ai didi

java - 画得太快时椭圆形不相连

转载 作者:行者123 更新时间:2023-12-01 23:21:14 26 4
gpt4 key购买 nike

我正在编写必须绘制平滑连接线的小程序,我正在用这条线来完成它(用户正在输入笔的宽度)

    public void mouseDragged(MouseEvent arg0)
{
g.setColor(kolor);
int width=Integer.parseInt(szPedzel.getText());
g.fillOval(arg0.getX(), arg0.getY(), width, width);
}

其中 g = this.getGraphics();

当我画得有点慢时,这很好,但是当我画得更快时,会显示单个椭圆形,是否有任何方法可以连接这个椭圆形?

图片:http://i42.tinypic.com/1536x04.png

最佳答案

不,你不想这样画:

public void mouseDragged(MouseEvent arg0)
{
g.setColor(kolor);
int width=Integer.parseInt(szPedzel.getText());
g.fillOval(arg0.getX(), arg0.getY(), width, width);
}

where g = this.getGraphics();

如果您使用getGraphics()在组件上,那么由此获得的 Graphics 对象将是短暂的,并且所有生成的图像都面临无法正确绘制的风险。不相信我?然后最小化并在 GUI 运行时恢复它并观察椭圆形消失。

相反,我建议:

  • 为您的绘图组件提供 ArrayList<Point>
  • 在您的 GUI 中 paintComponent(Graphics g)方法(如果这是 Swing GUI),迭代列表中每个点之间的绘制线。
  • 在 MouseMotionListener 中,将 Points 添加到列表中并调用 repaint() .
  • 如果您想要更粗的线条,请将您的 Graphics 对象转换为 Graphics2D 对象并调用 setStroke(Stroke s)在其上,传入一个厚度 > 1 的 BasicStroke 对象。

  • 例如,请查看 this link .

关于java - 画得太快时椭圆形不相连,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20588745/

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