PorterDuff.Mode.Multiply没有按预期工作?黑色背景而不是透明

时间:2012-09-18 08:02:54

标签: c# android xamarin.android alpha porter-duff

我有PorterDuff.Mode.Multiply的问题,似乎所有alpha通道都设置为'black'。这是按预期的吗?在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;

帮助? :)

这是Mono for Android

编辑:DstIn具有相同的不良影响。 (alpha是黑色的)

1 个答案:

答案 0 :(得分:1)

我整天都遇到同样的问题。我快疯了。

这行代码对我有用:

yourView.setLayerType(View.LAYER_TYPE_SOFTWARE, null); 

将其放在类构造函数中,现在黑色背景应该消失了。