如何为使用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"));
}
上面的代码工作正常,但我的印象是我没有使用正确的过滤器。
- 是否有任何一种“着色”功能的过滤器?
- 如何实现相同的背景像素呢?
- 任何简单的方法来颠倒颜色?
欢迎详细解释。
答
我觉得颜色过滤器是正确的过滤器(因为你正在改变颜色),但你也可以尝试使用混合模式,而不是照明:
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);
}
由于混合模式的结果,你可以做很多这个,甚至颠倒颜色。