【发布时间】:2010-08-05 10:58:28
【问题描述】:
我正在用 java 编程。
我本质上是在做一个类似绘画的工具。用户可以选择背景图像、使用鼠标绘制线条或擦除线条。擦除线条时,背景图像应该仍然相同。
所以我试图做的是有一个单独的背景图像和另一个图像来跟踪鼠标移动和绘制线条。然后我将这 2 个图像组合起来以显示最终图像。
我无法解决的问题是擦除功能。我尝试使用 setXORMode,如果我有一个具有 1 种颜色的背景图像,它会很好用。但是,如果图像具有渐变色,那么我在其上绘制的线条也会改变颜色。
这是我正在处理的代码的 sn-p:
private void backgroundImageOverNote()
{
Graphics2D g = image.createGraphics();
g.drawImage(backgroundImage.getImage(), 0, 0, 400, 200, null);
g.drawImage(sketchImage, 0, 0, 400, 200, null);
g.dispose();
}
public void sketch(SketchData sketchEvent)
{
if(isValidXYPosition(sketchEvent.getX(), sketchEvent.getY()))
{
Graphics2D g = sketchImage.createGraphics();
g.drawLine(oldX, oldY, sketchEvent.getX(), sketchEvent.getY());
g.dispose();
}
oldX = sketchEvent.getX();
oldY = sketchEvent.getY();
}
private BufferedImage sketchImage = new BufferedImage(400, 200, BufferedImage.TYPE_INT_ARGB);
private ImageIcon backgroundImage;
【问题讨论】: