我想在画布上绘制一些文字,并希望清除从特定区域(由Rect定义的区域)绘制的所有内容。
我绘制洋红色文字,想要清除灰色的所有内容,并将所有内容保存在白框中。我将白色区域作为矩形。
答案 0 :(得分:2)
试试这个。绘制四个矩形,涂料设置为白色。
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(如果启用了硬件加速)