如何解决如何使用c#在win2dCanvasVirtualControl中加载SVG图像?
我正在使用Win2D开发UWP应用,我想知道如何在Win2D中加载.svg文件(存在于我的应用中)。我不知道如何读取svg文件并将其转换为RandomAccessStream。
解决方法
如何使用c#在win2d(CanvasVirtualControl)中加载svg图像?
Win2D包含CanvasSvgDocument
类,该类用于从流中加载svg。您可以使用StorageFile OpenReadAsync
方法将svg文件作为流打开,然后调用CanvasSvgDocument.LoadAsync
方法以获取svgDocument。有关更多信息,请参阅以下内容。
CanvasVirtualControl canvasVirtualControl;
private void Page_Loaded(object sender,RoutedEventArgs e)
{
canvasVirtualControl = new CanvasVirtualControl();
canvasVirtualControl.Width = 1486;
canvasVirtualControl.Height = 610;
MyCanvas.Children.Add(canvasVirtualControl);
Canvas.SetLeft(canvasVirtualControl,0);
Canvas.SetTop(canvasVirtualControl,100);
canvasVirtualControl.RegionsInvalidated += CanvasVirtualControl_RegionsInvalidated;
}
private async void CanvasVirtualControl_RegionsInvalidated(CanvasVirtualControl sender,CanvasRegionsInvalidatedEventArgs args)
{
CanvasDrawingSession drawingSession;
Rect rect = new Rect(args.InvalidatedRegions[0].Left,args.InvalidatedRegions[0].Top,args.InvalidatedRegions[0].Width,args.InvalidatedRegions[0].Height);
using (drawingSession = sender.CreateDrawingSession(rect))
{
var file = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Assets/xxx.svg"));
using (var stream = await file.OpenReadAsync())
{
var svgDocument = await CanvasSvgDocument.LoadAsync(sender,stream);
drawingSession.DrawSvg(svgDocument,sender.Size);
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。