首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在win2d (CanvasVirtualControl)中使用c#加载svg映像?

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

Stack Overflow用户
提问于 2020-08-17 06:15:05
回答 1查看 324关注 0票数 0

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-17 11:59:46

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

Win2D包含用于从流加载svg的CanvasSvgDocument类。您可以使用StorageFile OpenReadAsync方法作为流打开svg文件,然后调用CanvasSvgDocument.LoadAsync方法获取svgDocument。欲了解更多信息,请参考以下内容。

代码语言:javascript
复制
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);
        }
    }        
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63445474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档