繁体   English   中英

如何使用 c# 在 win2d (CanvasVirtualControl) 中加载 svg 图像?

[英]How to load an svg image in win2d (CanvasVirtualControl) using c#?

我正在使用 Win2D 开发 UWP 应用程序,我想知道如何在 Win2D 中加载一个 .svg 文件(存在于我的应用程序中)。 我不知道如何读取 svg 文件并将其转换为 RandomAccessStream。

如何使用 c# 在 win2d (CanvasVirtualControl) 中加载 svg 图像?

Win2D 包含CanvasSvgDocument class,用于从 stream 加载 svg。 您可以使用 StorageFile OpenReadAsync方法将 svg 文件打开为 stream 然后调用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);
        }
    }        
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM