我对 PorterDuff.Mode.Multiply 有疑问,似乎所有 Alpha 通道都设置为“黑色”。这是预期的吗?在 Photoshop / gimp 等中,效果将透明度留在应有的位置。变暗只留下透明度,但仍将效果应用于具有 RGB 的值,这就是我想要的,但具有乘法的效果。
只是 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 具有相同的不良影响。(阿尔法是黑色的)