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

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

我对 PorterDuff.Mode.Multiply 有疑问,似乎所有 alpha channel 都设置为“黑色”。这是预期的吗?在 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 的单声道

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

最佳答案

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

对我有用的是这行代码:

yourView.setLayerType(View.LAYER_TYPE_SOFTWARE, null); 

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

关于c# - PorterDuff.Mode.Multiply 没有按预期工作?黑色背景而不是透明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12472758/

相关文章:

C# LINQ 每组取有限结果

c# - 简单的MySQL二进制数据插入

android - 如何将最新数据 append 到 android 中的自定义基本适配器 ListView ?

android - 查找窗口失败 - 2 个 galaxy nexus 上同一应用程序的不同行为

android - 在 Android 中创建交互式防火墙应用程序

android - Xamarin.Forms Android 在 VS 2019 上启动时崩溃

android - SQLite 数据库锁定读取

c# - 将图像从 xml 中的字节转换为 word 文档

c# - 使用计算机作为USB通信中间人

c# - 如何在 Android 中重用现有的 C# 代码?