2

私は描画用のアプリケーションを開発してきましたが、次のコードがあります。

public class PainterView extends View implements DrawingListener {

    private GestureDetector detector;
    private Context context;
    private Painter painter;
    private Bitmap background;
    private Bitmap bitmap;
    private Paint bitmapPaint;
    private Path path;
    private Paint paint;

    private float x;
    private float y;

    public PainterView(Context context, Painter painter) {

        super(context);
        this.context = context;
        this.painter = painter;
        detector = new GestureDetector(context, new GestureListener());

    }

    @Override
    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
        super.onSizeChanged(w, h, oldw, oldh);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        if (bitmap != null) {
            canvas.drawBitmap(background, 0, 0, bitmapPaint);
            canvas.drawBitmap(bitmap, 0, 0, bitmapPaint);
            canvas.drawPath(path, paint);
        }
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        detector.onTouchEvent(event);
        x = event.getX();
        y = event.getY();
        switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:
            painter.touchStart(x, y);
            break;
        case MotionEvent.ACTION_MOVE:
            painter.touchMove(x, y);
            break;
        case MotionEvent.ACTION_UP:
            painter.touchUp();
            break;
        }
        return true;
    }

    @Override
    public void onPictureUpdate(Bitmap background, Bitmap bitmap, Paint bitmapPaint, Path path,
            Paint paint) {
        this.background=background;
        this.bitmap = bitmap;
        this.bitmapPaint = bitmapPaint;
        this.path = path;
        this.paint = paint;
        invalidate();
    }

    public void setPainter(Painter painter) {
        this.painter = painter;
    }

したがって、背景のビットマップは画像(罫紙)であり、ユーザーがメモを消去できるようにするには、消しゴムをエミュレートする方法を知る必要がありますか?

4

1 に答える 1

0

あなたはこのようなことをすることができます:

public class Eraser
{
    public void erase(int locX, int locY, int brushsize)
    {
        for(int x = locX - brushsize;x < locX + brushsize;x++)
        {
            for(int y = locY - brushsize;y < locY + brushsize;y++)
            {
                map.setPixle(x,y,Color.white);
            }
        }
    }

    private Bitmap map;
}

これは正方形の消しゴムです。本当に必要な場合は、円形にする方法を見つけられると思います。彼が助けてくれたことを願っています!

于 2012-06-17T08:04:25.833 に答える