キャンバスにテキストを描画し、特定の領域 (Rect で定義された領域) から描画されたものをすべてクリアしたいと考えています。
私はマゼンタのテキストを描き、灰色のすべてをクリアし、すべてを白いボックスに保持したいと考えています。白い部分を四角形として取得しました。
キャンバスにテキストを描画し、特定の領域 (Rect で定義された領域) から描画されたものをすべてクリアしたいと考えています。
私はマゼンタのテキストを描き、灰色のすべてをクリアし、すべてを白いボックスに保持したいと考えています。白い部分を四角形として取得しました。
これを試して。ペイントを白色に設定して4つの長方形を描画します。
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 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 からしか機能しません (ハードウェア アクセラレーションが有効になっている場合)。