7

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

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

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

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

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

欢迎详细解释。

4

1 回答 1

11

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

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

作为混合模式的结果,你可以做很多这样的事情,甚至反转颜色。

于 2017-01-23T12:01:12.140 回答