如何在 SkiaSharp 中使 SKBitmap 位图颜色为透明

Posted

技术标签:

【中文标题】如何在 SkiaSharp 中使 SKBitmap 位图颜色为透明【英文标题】:How to make the SKBitmap bitmap color as Transparent in SkiaSharp 【发布时间】:2018-02-13 11:47:42 【问题描述】:

在 System.Drawing 中,我们将使用 maketransparent 方法将位图图像颜色设置为透明 SKBITMAP 是否有任何其他等效的方法可以使颜色变为透明。

Bitmap imgData = new Bitmap() imgData.MakeTransparent(Color.White);//在system.Drawing中

任何人都可以提出一种解决方案,使 SkiaSharp.SKBitmap 的颜色透明

【问题讨论】:

谁能为此提出解决方案? 【参考方案1】:

设置SKBitmap.Pixels 可以解决问题。 这是一个扩展方法:

public static void ClearToTransparent (this SKBitmap bitmap) 
    int pixelCount = bitmap.Width * bitmap.Height;
    SKColor[] colors = new SKColor[pixelCount];
    SKColor transparent = new SKColor(0, 0, 0, 0);

    for (int n = 0; n < pixelCount; n++) 
        colors[n] = transparent;
    
    bitmap.Pixels = colors;

【讨论】:

【参考方案2】:

我建议在官方skia论坛上提问: https://groups.google.com/forum/#!forum/skia-discuss

我对skia 了解不少,但他们什么都知道。 SkiaSharp 只是原生库的一个薄包装器,所以无论他们做什么都只是在 C# 中做同样的事情。

【讨论】:

嗨@matthew 感谢您的更新。我已经在提供的论坛中发布了上述内容。请参考下面的链接。 groups.google.com/forum/#!topic/skia-discuss/sn8Qxhw5Ckw

以上是关于如何在 SkiaSharp 中使 SKBitmap 位图颜色为透明的主要内容,如果未能解决你的问题,请参考以下文章

为啥 SkiaSharp.SKBitmap.Resize 返回 null?

如何在 Windows.Forms 应用程序中呈现 SKBitmap?

如何使用 SkiaSharp 加载“独立于平台”的图像?

添加了 Xamarin SKEncodedImageFormat Jpeg 背景

如何使用 SkiaSharp 测量尾随空格?

如何避免在 SkiaSharp 中“叠加”不透明度