2

キャンバスにテキストを描画し、特定の領域 (Rect で定義された領域) から描画されたものをすべてクリアしたいと考えています。

ここに画像の説明を入力

私はマゼンタのテキストを描き、灰色のすべてをクリアし、すべてを白いボックスに保持したいと考えています。白い部分を四角形として取得しました。

4

2 に答える 2

2

これを試して。ペイントを白色に設定して4つの長方形を描画します。

  • mCanvas-android.graphics.Canvasのオブジェクト
  • rect-Rect
  • xMax-MaximusX値
  • 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 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 に答える