如何使用 c# 在 win2d (CanvasVirtualControl) 中加载 svg 图像?
How to load an svg image in win2d (CanvasVirtualControl) using c#?
我正在使用 Win2D 开发 UWP 应用程序,我想知道如何在 Win2D 中加载 .svg 文件(存在于我的应用程序中)。我不知道如何读取 svg 文件并将其转换为 RandomAccessStream。
How to load an svg image in win2d (CanvasVirtualControl) using c#?
Win2D 包含用于从流加载 svg 的 CanvasSvgDocument
class。您可以使用 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);
}
}
}
我正在使用 Win2D 开发 UWP 应用程序,我想知道如何在 Win2D 中加载 .svg 文件(存在于我的应用程序中)。我不知道如何读取 svg 文件并将其转换为 RandomAccessStream。
How to load an svg image in win2d (CanvasVirtualControl) using c#?
Win2D 包含用于从流加载 svg 的 CanvasSvgDocument
class。您可以使用 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);
}
}
}