2012-08-11 104 views
1

我想画一些文字到画布上,并且想要清除从特定区域(由Rect定义的区域)抽出的所有内容。画布:清除矩形但保留内容的其余部分

enter image description here

我画品红色文字和想清楚一切都在灰色和把一切都在白色的盒子。我得到了白色区域作为rect。

+0

您可以使用画布对象的drawRect方法。 – Renard 2012-08-11 10:26:33

+0

我不想画它,我想清楚它 – 2012-08-11 10:33:09

+0

与您选择的颜色擦除和绘制它有什么区别?只需调用drawRect 4次来清除白色矩形外的区域。 – Renard 2012-08-11 10:35:31

回答

1

试试这个。绘制四个矩形,颜色设置为白色。

  • mCanvas - 的android.graphics.Canvas
  • RECT对象 - 的Rect
  • XMAX - 鲆X值
  • YMAX - 鲆Y值

    mCanvas.drawRect(0, 0, rect.left, yMax, paint);

    mCanvas.drawRect(0, 0, xMax, rect.top, paint);

    mCanvas.drawRect(0, rect.bottom, xMax, yMax, paint);

    mCanvas.drawRect(rect.right, 0, xMax, yMax, paint);

这可能帮助ü

0

对于透明涂料使用:

canvas.drawRect(0, 0, rect.left, yMax, paint); 
    canvas.drawRect(rect.left, 0, xMax, rect.top, paint); 
    canvas.drawRect(rect.left, rect.bottom, rect.right, yMax, paint); 
    canvas.drawRect(rect.right, rect.top, xMax, yMax, paint); 

或者,如果你需要另一种形状的使用路径:

Path path = new Path(); 
    //path.addCircle(centerX, centerY, radius, Path.Direction.CCW); 
    path.addRect(rect, Path.Direction.CCW); 

    canvas.clipPath(path, Region.Op.DIFFERENCE); 
    canvas.drawRect(0, 0, xMax, yMax, paint); 

不幸的是,clipPath只能从API 18起作用(如果启用了硬件加速)