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 にも同じ望ましくない効果があります。(アルファは黒)