如何着色装载SkiaSharp的黑白SVG?

Dan*_* D. 7 svg android xamarin.android xamarin skiasharp

我正在玩新版本的SkiaSharp(1.55),它支持在Xamarin.Android(而不仅仅是)上加载SVG.由于它是在不到10天前发布的事实,我找不到这么多文档.

加载黑白SVG后,我想将它着色(将前景填充颜色从黑色改为我需要的任何颜色).这就是我正在做的事情.

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

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

  1. 是否有任何具有"着色"功能的过滤器?
  2. 如何实现相同的背景像素呢?
  3. 任何简单的方法来反转颜色?

欢迎详细解释.

Mat*_*hew 10

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

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);
}
Run Code Online (Sandbox Code Playgroud)

混合模式的结果是,您可以进行很多操作,甚至可以反转颜色。