如何为加载了 SkiaSharp 的黑白 SVG 着色?
How to colorize black and white SVG loaded with SkiaSharp?
我正在玩新版本的 SkiaSharp (1.55),它支持在 Xamarin.Android(而且不仅如此)上加载 SVG。由于它是在不到 10 天前发布的,所以我找不到那么多文档。
加载黑白 SVG 后,我想给它上色(将前景填充颜色从黑色更改为我需要的任何颜色)。这就是我正在做的。
using (var paint = new SKPaint())
{
paint.ColorFilter = SKColorFilter.CreateLighting(SKColors.White, SKColor.Parse("#FF0000"));
}
上面的代码工作正常,但我的印象是我没有使用正确的过滤器。
- 有没有那种"colorize"功能的滤镜?
- 如何为背景像素实现同样的效果?
- 有什么简单的方法可以反转颜色吗?
欢迎详细解释。
我认为颜色滤镜是正确的滤镜(因为你正在改变颜色),但你也可以尝试使用混合模式而不是光照:
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);
}
由于混合模式,您可以做很多这样的事情,甚至反转颜色。
我正在玩新版本的 SkiaSharp (1.55),它支持在 Xamarin.Android(而且不仅如此)上加载 SVG。由于它是在不到 10 天前发布的,所以我找不到那么多文档。
加载黑白 SVG 后,我想给它上色(将前景填充颜色从黑色更改为我需要的任何颜色)。这就是我正在做的。
using (var paint = new SKPaint())
{
paint.ColorFilter = SKColorFilter.CreateLighting(SKColors.White, SKColor.Parse("#FF0000"));
}
上面的代码工作正常,但我的印象是我没有使用正确的过滤器。
- 有没有那种"colorize"功能的滤镜?
- 如何为背景像素实现同样的效果?
- 有什么简单的方法可以反转颜色吗?
欢迎详细解释。
我认为颜色滤镜是正确的滤镜(因为你正在改变颜色),但你也可以尝试使用混合模式而不是光照:
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);
}
由于混合模式,您可以做很多这样的事情,甚至反转颜色。