我想在画布上绘制一些文本,并想清除从特定区域(由 Rect 定义的区域)绘制的所有内容。
我画了洋红色文本,想清除灰色中的所有内容并将所有内容保留在白色框中。我得到了白色区域作为矩形。
我想在画布上绘制一些文本,并想清除从特定区域(由 Rect 定义的区域)绘制的所有内容。
我画了洋红色文本,想清除灰色中的所有内容并将所有内容保留在白色框中。我得到了白色区域作为矩形。
试试这个。绘制四个矩形,油漆设置为白色。
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);
它可能会帮助你
对于具有透明度的油漆,请使用:
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(如果启用了硬件加速)