6

ビットマップからセクションをどのようにカット (削除) しますか??? そのセクション/形状を削除したい..セクションの代わりに透明のままにする..形状が円または正方形であると言います..

ここに画像の説明を入力

ここに画像の説明を入力

4

3 に答える 3

11

Porter-Duff カラー フィルターとCanvas:

public void punchHole(Bitmap bitmap, float cx, float cy, float radius) {
    Canvas c = new Canvas(bitmap);
    Paint paint = new Paint();
    paint.setColorFilter(new PorderDuffColorFilter(0, PorderDuff.Mode.CLEAR));
    c.drawCircle(cx, cy, radius, paint);
}

まあ、それは間違っていました。ただし、Porter-Duff 転送モードを使用すると機能します。

public void punchHole(Bitmap bitmap, float cx, float cy, float radius) {
    Canvas canvas = new Canvas(bitmap);
    Paint paint = new Paint();
    paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
    canvas.drawCircle(cx, cy, radius, paint);
}

(もちろん、引数として渡されるビットマップは変更可能である必要があります。)

于 2012-08-01T21:00:15.047 に答える
0

Bitmap.setPixel(x、y、Color)関数を使用して、目的のピクセルを透明に設定します

例えば:

Bitmap bmp = ...;
bmp.setPixel (100,100,Color.TRANSPARENT);

x/yオフセット100,100のピクセルの場合。多くのピクセルでこれを行うには、これが潜在的に遅いことがわかりますが...

于 2012-08-01T19:37:19.677 に答える
0

透明な色、ARGB = 0,0,0,0で円を描いてみましたか?

于 2012-08-01T21:34:06.380 に答える