如何使用SkiaSharp对加载的黑白SVG进行着色?

8
我正在使用最新版本的SkiaSharp(1.55),该版本支持在Xamarin.Android(以及其他平台)上加载SVG。由于该版本发布不到10天,因此我找不到太多文档资料。
在将黑白SVG加载后,我希望对其进行着色(将前景填充颜色从黑色更改为任何需要的颜色)。以下是我的操作步骤。
using (var paint = new SKPaint())
{
    paint.ColorFilter = SKColorFilter.CreateLighting(SKColors.White, SKColor.Parse("#FF0000"));
}

上述代码运行良好,但我感觉我没有使用正确的过滤器。

  1. 是否有一种带有“着色”功能的过滤器?
  2. 如何实现背景像素的相同效果?
  3. 有什么简单的方法可以反转颜色吗?

欢迎提供详细的解释。

1个回答

12

我认为颜色滤镜是正确的滤镜(因为你正在改变颜色),但你也可以尝试使用混合模式而不是灯光:

using (var paint = new SKPaint()) {
    paint.ColorFilter = SKColorFilter.CreateBlendMode(
        SKColors.Red,       // the color, also `(SKColor)0xFFFF0000` is valid
        SKBlendMode.SrcIn); // use the source color

    canvas.DrawPicture(svgPicture, paint);
}

由于混合模式的作用,即使是色彩反转,你也可以做出许多效果。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接