5

ここに画像の説明を入力

私は非常に単純なことをしようとしています(上記を参照)。中央の円を塗りつぶすピクセルを除いて、キャンバスのすべてのピクセルを無地にしたい。この件に関する何百ものスタック オーバーフローの投稿を読み、PorterDuff.Mode の設定など、何百ものことを試しました。これが私の現在の onDraw() の MyView extends View です:

  protected void onDraw(Canvas canvas) {
    int w = canvas.getWidth();
    int h = canvas.getHeight();

    Paint framePaint = new Paint();
    framePaint.setStyle(Paint.Style.FILL);
    framePaint.setColor(Color.BLUE);
    canvas.drawRect(0, 0, w, h, framePaint);

    Paint transparentPaint = new Paint();
    transparentPaint.setColor(Color.TRANSPARENT);
    transparentPaint.setAntiAlias(true);
    canvas.drawCircle(w / 2, h / 2, (w + h) / 4, transparentPaint);
  }

私は何かを誤解していますか?なぜ既存のピクセルを透明なペイントで塗りつぶすことができないのですか? これを行うと、ピクセルは同じままです。PorterDuff を使用すると、ピクセルが黒くなります。助けてください。

4

1 に答える 1