7

私のアプリでは、ユーザーが画像を編集できます。画像は「スライス」で編集されます: ユーザーは編集する大きな画像の一部を選択し (1)、ユーザーはそれを編集し (2、3)、ユーザーが終了すると、編集されたスライスが元の画像の上にコピーされます。画像 (4)。次の図で、簡略化された手順を確認できます。

サンプルワークフロー

  • スライスを編集するには、トリミングされた領域のビットマップを作成します。これは、ユーザーが編集する領域です (2,3)。

  • ユーザーが終了したらdrawBitmap()、元の画像にスライスします (4)。元の画像には反転する必要がある変換行列などがあるため、プロセスはより複雑になりますが、簡単にするためにはこれで十分です。

この問題は、ユーザーがスライス内のいくつかのピクセルをクリアしたときに発生します (3)。適切なモードが見つからないPorterDuff / Paintため、編集されたスライスが元の画像の部分を、透明なピクセルでも置き換えます。私が望むのは、(4)に示されている結果を得ることです

これまでの私の最善の策は を使用するPorterDuff.SRCことですが、下の画像でわかるように、元の画像では透明なピクセルが黒に変わります。ペイントの色を透明に設定すると、結果全体が黒になります。

    mBlitPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC));
    mImageCanvas.drawBitmap(mArenaBitmap, invertedMatrix, mBlitPaint);

私も試しSRC_OVERてみmImageCanvas.drawARGB (0xff,0,0,0),ましたが、運がありませんでした。最初のケースでは、透明なピクセルは単に無視されます。2 番目の例では、透明なピクセルが黒く塗られています。

サンプル結果

4

0 に答える 0