画像の上でペイント
画像の上にお絵かきがしたいと思っています
今の段階では、書くことはできます。
しかし、書いたものを消すことができません・・・。
他のペイントのサンプルを見ましたが、消しゴム機能はただカラーを背景色と同色で上塗り(?)してるだけでした。
僕が求めているものとしては、書いてある物を消して背景の画像が映るというようにしたいんです!!
ペイントパネルのソースの一部です
自分なりに必要だと思うところを抜き出してみました
//鉛筆(黒)
public void pat1(Graphics2D g2d)
{
rc = gc = bc = 0;
count = 255;
g2d.setStroke( new BasicStroke( 3.0F ) );
g2d.setPaint(new Color(rc, gc, bc, count));
g2d.fillOval(currentPoint.x, currentPoint.y, 10, 10);
g2d.dispose();
}
//消しゴム(白)
public void pat2(Graphics2D g2d)
{
rc = gc = bc = 254;
count = 0;
g2d.setStroke( new BasicStroke( 3.0F ) );
g2d.setPaint(new Color(rc, gc, bc, count));
g2d.fillOval(currentPoint.x, currentPoint.y, 10, 10);
g2d.dispose();
}
//リスナークラスの定義
class MoveLis extends MouseMotionAdapter
{
public void mouseDragged(MouseEvent e)
{
Point p = e.getPoint();
if (offImage == null) {
// ここは注意が必要 ⇒ BufferedImage.TYPE_INT_ARGB
// BufferedImage.TYPE_INT_RGBを使うと下のレイヤーの画像が塗り消されてしまいます
// アルファチャネルも追加しておく
offImage = new BufferedImage(getWidth(), getHeight(),
BufferedImage.TYPE_INT_ARGB);
}
Graphics2D g2d = (Graphics2D) offImage.createGraphics();
switch(graPattern){
case 1:pat1(g2d);
break;
case 2:pat2(g2d);
break;
}
repaint();
//座標取得
currentPoint = e.getPoint();
}
}
public void paintComponent( Graphics g ) {
super.paintComponent( g );
if ( offImage != null ) {
g.drawImage( offImage, 0, 0, this );
}
}
回答よろしくお願いします