在WPF中使用SVG文件作为图标的正确方法是什么 您所在的位置:网站首页 svg图片怎么改颜色 在WPF中使用SVG文件作为图标的正确方法是什么

在WPF中使用SVG文件作为图标的正确方法是什么

2023-05-30 18:55| 来源: 网络整理| 查看: 265

Windows 10 build 15063“创建者更新”原生支持SVG图像(尽管有一些问题)到针对Windows 10的UWP/UAP应用程序。

如果您的应用程序是WPF应用程序而不是UWP/UAP应用程序,您仍然可以使用此API (在经历了许多困难之后):Windows 10 build 17763“2018年10月更新”引入了XAML岛的概念(作为一种“预览”技术,但我相信在应用程序商店中是允许的;在所有情况下,随着Windows 10 build 18362“2019年5月更新”XAML岛不再是预览功能,并且完全支持),允许您在WPF应用程序中使用UAP和控件。

您需要首先使用,并使用某些与用户数据或系统交互的Windows10API(例如,在Windows10UWP webview中从磁盘加载图像或使用toast通知API来显示toast),您还需要将您的WPF应用程序与包标识关联(在Visual Studio2019中非常容易)。不过,使用Windows.UI.Xaml.Media.Imaging.SvgImageSource类应该不需要这样做。

使用方法(如果你在UWP上,或者你已经按照上面的说明在WPF下添加了XAML岛支持)就像将的Source设置为SVG的路径一样简单。这相当于使用SvgImageSource,如下所示:

然而,以这种方式(通过XAML)加载的SVG图像是may load jagged/aliased。一种解决方法是指定一个double+您的实际高度/宽度的RasterizePixelHeight或RasterizePixelWidth值:

这可以通过在基本镜像的ImageOpened事件中创建一个新的SvgImageSource来动态解决:

var svgSource = new SvgImageSource(new Uri("ms-appx://" + Icon)); PrayerIcon.ImageOpened += (s, e) => { var newSource = new SvgImageSource(svgSource.UriSource); newSource.RasterizePixelHeight = PrayerIcon.DesiredSize.Height * 2; newSource.RasterizePixelWidth = PrayerIcon.DesiredSize.Width * 2; PrayerIcon2.Source = newSource; }; PrayerIcon.Source = svgSource;

混叠可能很难在非高dpi屏幕上看到,但这里尝试说明它。

这是上述代码的结果:一个Image使用初始SvgImageSource,其下的第二个Image使用在ImageOpened事件中创建的SvgImageSource:

这是上图的放大视图:

而这是底部(抗锯齿,正确的)图像的放大视图:

(您需要在新的选项卡中打开图像并以全尺寸查看,以欣赏其中的差异)



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有