1

PorterDuff.Mode.Multiply に問題があります。すべてのアルファ チャネルが「黒」に設定されているようです。これは意図したとおりですか?photoshop / gimp などでは、効果は本来あるべき場所に透明性を残します。Darken は透明度をそのままにしますが、RGB の値に効果を適用します。これは私が望むものですが、Multiply の効果を使用します。

オーバーレイで黒い背景の問題を引き起こすのは、PorterDuff.Mode.Multiply だけです。

Bitmap photo = ((BitmapDrawable)ivPhoto.Drawable).Bitmap;
Bitmap overlay = ((BitmapDrawable)overlay.Drawable).Bitmap;

Point ss = getScaledSize(photo.Width, photo.Height, scrSize.X, scrSize.Y);

Bitmap bresult = Bitmap.CreateScaledBitmap(photo, ss.X, ss.Y, true);

Canvas myCanvas = new Canvas(bresult);

Paint myPaintStyle = new Paint(PaintFlags.FilterBitmap);

myPaintStyle.SetXfermode(new PorterDuffXfermode(PorterDuff.Mode.Multiply));

myCanvas.DrawBitmap(
    overlay,  //img
    ivHair.GetX(), ivHair.GetY(),  //x,y
    myPaintStyle); //style


return bresult;

ヘルプ?:)

これは Android 用の Mono にあります

編集: DstIn にも同じ望ましくない効果があります。(アルファは黒)

4

1 に答える 1