为什么程序中无法正确显示 SVG 图像?

102*_*074 1 wpf

我想在 WPF 中显示 SVG 文件,我发现很多人推荐使用sharpvectors.

我将它与 XAML 一起使用,如下所示:

<Window x:Class="KongGamLung.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:KongGamLung"        
        xmlns:SVG="http://sharpvectors.codeplex.com/svgc/"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <SVG:SvgViewbox Source="Create.svg" AutoSize="True" OptimizePath="False" TextAsGeometry="True"></SVG:SvgViewbox>
    </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

那么,SVG 在编辑器中正确显示: 在此处输入图片说明

但是,在我运行程序后,SVG 不见了。 在此处输入图片说明

为什么会变成这样?更重要的是,我在 NUGET 中尝试了几个 SVG 包。但它们比这更糟糕,即使在编辑器中也无法显示。

我该如何解决这个问题?如果有比这更好的 SVG 包,请推荐给我。谢谢你。


在此处输入图片说明

Mat*_* KP 5

您有 2 个选择。

  1. 如果您将 svg 文件的构建操作设置为“内容”,那么您应该将“复制到输出目录”设置为“始终复制”或“如果更新则复制”。
  2. 如果您将 svg 文件的 Build Action 设置为“Resource”,它将作为程序集资源,可以通过Resource File Pack URI访问。

然后您可以在 XAML 中使用它,如下所示,您可以将复制到输出目录设置为“不复制”。

<SVG:SvgViewbox Source="Create.svg"
                AutoSize="True" OptimizePath="False" TextAsGeometry="True"/>
Run Code Online (Sandbox Code Playgroud)