【发布时间】:2014-10-27 09:33:04
【问题描述】:
通过将鼠标点保存在数组列表中来制作一个类似于绘画的应用程序。我的想法是有一个包含所有先前绘制的东西的“点”数组列表,以及一个“临时”数组列表来获取和修改用户刚刚输入的当前画笔笔触。这是必要的,因为用户可以更改颜色和大小,所以我的想法是根据按下的按钮修改当前的笔触,然后将该笔触添加到图片的其余部分。我在 StackOverflow 周围搜索并找到了一些代码,但无法让它按我想要的方式工作(假设我找到了正确的代码)。
@Override
public void paintComponent(Graphics g1) {
super.paintComponent(g1);
final Graphics2D g = (Graphics2D)g1.create();
try {
g.setColor(brushColor);
for (Point point : tempArrayList){
g.fillOval(point.x, point.y, brushSize, brushSize);
}
} finally {
g.dispose();
}
问题是我需要为下一个画笔笔划清除 tempArrayList,当他们更改颜色/大小时我可以这样做,但随后它会擦除以前存在的内容。我开始认为我什至不需要上面描述的“点”数组列表,因为我希望 g1 图形只会保存 g 图形创建的内容。
我想我只需要弄清楚如何将 g 图形添加到 g1
【问题讨论】:
-
"如何防止 JPanel 重新绘制所有内容?" 绘制到
BufferedImage并在标签中显示。 -
@AndrewThompson 你能告诉我怎么做吗?或者链接到另一个类似的 SE 问题?
-
这是一个recent example 在缓冲图像中制作动画。
WorldView源是另一个例子。两者都是 MCVE。