填充整个画布,但保持边界填充区域像圆形、矩形一样

Pra*_*tik 5 android android-canvas

可能重复

你好朋友,

我创建油漆应用程序,我有问题。如果我绘制没有填充或其他类似边界区域的矩形并更改背景颜色,则矩形填充区域也会更改,这意味着整个画布颜色将填充新的背景颜色。如何保留背景或填充未绑定的画布区域,这是图像

这是初始图像

在此处输入图片说明

更改背景颜色后得到这个结果

在此处输入图片说明

但如何变得像这样

在此处输入图片说明

Hir*_*bhi 0

这是代码(您必须在触摸事件上绑定形状,否则它会改变形状的颜色):

public class ttt extends View {
MyShape myShape;
public ttt(Context context) {
    super(context);
    // TODO Auto-generated constructor stub
    myShape = new MyShape();
    Paint paint = new Paint();
    paint.setColor(Color.WHITE);
    myShape.setPaint(paint);
}

@Override
protected void onDraw(Canvas canvas) {
    // TODO Auto-generated method stub
    super.onDraw(canvas);
    myShape.onDraw(canvas);     
}

@Override
public boolean onTouchEvent(MotionEvent event) {
    // TODO Auto-generated method stub
    int x = (int) event.getX();
    int y = (int) event.getY();

    switch (event.getAction()) {
    case MotionEvent.ACTION_DOWN:
        Paint paint = new Paint();
        paint.setColor(Color.BLUE);
        myShape.setPaint(paint);
        invalidate();
        break;

    default:
        break;
    }

    return super.onTouchEvent(event);
}

class MyShape {
    private Paint paint;
    public MyShape() {
        // TODO Auto-generated constructor stub
    }
    public void onDraw(Canvas canvas){
        canvas.drawCircle(15, 15, 30, getPaint());
    }
    /**
     * @param paint the paint to set
     */
    public void setPaint(Paint paint) {
        this.paint = paint;
    }
    /**
     * @return the paint
     */
    public Paint getPaint() {
        return paint;
    }

}
Run Code Online (Sandbox Code Playgroud)

}