2

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

在此处输入图像描述

我画了洋红色文本,想清除灰色中的所有内容并将所有内容保留在白色框中。我得到了白色区域作为矩形。

4

2 回答 2

2

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

  • mCanvas - android.graphics.Canvas 的对象
  • 矩形 - 矩形
  • 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);

它可能会帮助你

于 2012-08-11T10:34:24.313 回答
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(如果启用了硬件加速)

于 2015-05-06T14:50:16.857 回答