如何为使用SkiaSharp加载的黑色和白色SVG着色?

如何为使用SkiaSharp加载的黑色和白色SVG着色?

问题描述:

我正在玩新版本的SkiaSharp(1.55),它支持在Xamarin.Android(而不仅仅是)上加载SVG。由于它是在不到10天前发布的,我无法找到这么多的文档。我想将它着色(将前景填充颜色从黑色改变为我需要的任何颜色)。这就是我正在做的。如何为使用SkiaSharp加载的黑色和白色SVG着色?

using (var paint = new SKPaint()) 
{ 
    paint.ColorFilter = SKColorFilter.CreateLighting(SKColors.White, SKColor.Parse("#FF0000")); 
} 

上面的代码工作正常,但我的印象是我没有使用正确的过滤器。

  1. 是否有任何一种“着色”功能的过滤器?
  2. 如何实现相同的背景像素呢?
  3. 任何简单的方法来颠倒颜色?

欢迎详细解释。

我觉得颜色过滤器是正确的过滤器(因为你正在改变颜色),但你也可以尝试使用混合模式,而不是照明:

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); 
} 

由于混合模式的结果,你可以做很多这个,甚至颠倒颜色。