Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 为什么SVG图像不能在程序中正确显示_Wpf - Fatal编程技术网

Wpf 为什么SVG图像不能在程序中正确显示

Wpf 为什么SVG图像不能在程序中正确显示,wpf,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" xmln

我想在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>
那么,编辑器中正确显示的SVG:

但是,在我运行程序之后,SVG就消失了。

为什么结果是这样?此外,我在NUGET中尝试了几个SVG包。但它们比这更糟糕,甚至在编辑器中也无法显示

我怎样才能解决这个问题?如果有比这个更好的SVG包,请向我推荐。多谢各位

你有两个选择

如果将svg文件的构建操作设置为“内容”,则应将“复制到输出目录”设置为“始终复制”,或者如果较新,则设置为“复制”。 如果将svg文件的构建操作设置为Resource,则它将作为可由用户访问的程序集资源。 然后,您可以像下面这样在XAML中使用它,并且可以将Copy to Output Directory设置为not Copy

<SVG:SvgViewbox Source="Create.svg"
                AutoSize="True" OptimizePath="False" TextAsGeometry="True"/>
你有两个选择

如果将svg文件的构建操作设置为“内容”,则应将“复制到输出目录”设置为“始终复制”,或者如果较新,则设置为“复制”。 如果将svg文件的构建操作设置为Resource,则它将作为可由用户访问的程序集资源。 然后,您可以像下面这样在XAML中使用它,并且可以将Copy to Output Directory设置为not Copy

<SVG:SvgViewbox Source="Create.svg"
                AutoSize="True" OptimizePath="False" TextAsGeometry="True"/>

您的计算机中哪里有Create.svg文件?您是否将该文件作为资源包含在项目中?我已经编辑了主题。我是由adobe illustrator创建的,并已作为资源包含在项目中。@MathivananKPWhere您的计算机中有create.svg文件吗?您是否将该文件作为资源包含在项目中?我已经编辑了主题。我是由adobe illustrator创建的,并已将其作为资源包含在项目中。@MathivananKPI按照选项2进行了操作,效果良好。我想知道是visual studio导致了这一点还是sharpvectors?我害怕这些东西,因为它不会报告任何错误。我想知道为什么这里需要包URI前缀。如果将Image元素的Source属性设置为程序集资源路径,则可以在XAML中忽略它,因为XAML解析器会自动添加它。Source=/Create.svg可能有用吗?我按照选项2做了,它可以工作。我想知道是visual studio导致了这一点还是sharpvectors?我害怕这些东西,因为它不会报告任何错误。我想知道为什么这里需要包URI前缀。如果将Image元素的Source属性设置为程序集资源路径,则可以在XAML中忽略它,因为XAML解析器会自动添加它。Source=/Create.svg是否可行?