画布:清除rect但保留其余内容

时间:2012-08-11 09:44:59

标签: android

我想在画布上绘制一些文字,并希望清除从特定区域(由Rect定义的区域)绘制的所有内容。

enter image description here

我绘制洋红色文字,想要清除灰色的所有内容,并将所有内容保存在白框中。我将白色区域作为矩形。

2 个答案:

答案 0 :(得分:2)

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

  • mCanvas - android.graphics.Canvas的对象
  • rect - Rect
  • xMax - Maximus X值
  • yMax - Maximus 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);

这可能有助于你

答案 1 :(得分: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(如果启用了硬件加速)