问题描述
我需要读取SVG文件并将其呈现到.net Windows Form应用程序中的屏幕上。 我发现SkiaSharp程序集能够处理SVG文件,但是我没有发现SkiSharp类与Windows世界之间的关系。
如何将SkiaSharp对象(SKPicture,SKCanvas或其他合适的对象)呈现给.net Forms Graphics对象,或者更好地呈现给System.Drawing.Image?
如果这不可能,我应该渲染成PNG文件并读回吗?还是有另一个更合适的组件可以满足我的要求?
解决方法
现在我找到了一种方法:
SkiaSharp.Extended.Svg.SKSvg svg = new SkiaSharp.Extended.Svg.SKSvg();
svg.Load("Graphics.svg");
SKBitmap bitmap = new SKBitmap(100,100); // 100x100 target size
var canvas = new SKCanvas(bitmap);
canvas.DrawPicture(svg.Picture);
using (var stream = new MemoryStream())
{
bitmap.Encode(stream,SKEncodedImageFormat.Png,100);
stream.Seek(0,SeekOrigin.Begin);
var image = Image.FromStream(stream);
}
然后我将其显示在图像中并将其绘制到屏幕上。