如何在Windows 8/WinRT中将SVG文件转换为XAML

Win*_*ist 15 xaml svg c#-4.0 windows-8 windows-runtime

我如何在Windows 8/WinRT中将SVG文件转换为XAML.我是这个XAML/SVG环境的新手.所以任何人都可以帮我在windows 8中实现相同的功能.我需要解析这个svg文件,并需要通过代码在页面中显示内容.

Sev*_*ate 41

对我来说,最简单的方法是:

  1. 在免费矢量绘图工具Inkscape中打开.svg文件
  2. 保存为"Microsoft XAML(*.xaml)"

此外,您可能需要在转换后稍微更新结果输出文件,因为并非所有XAML处理引擎都支持将字符串转换为数字(如接受的答案中所述,为什么此Xaml Path会崩溃silverlight?).所以,例如,如果你有这个:

<Path Fill="#FFEDEDED" StrokeThickness="1" Stroke="#FFA3A3A3" Opacity="0.7" 
                VerticalAlignment="Center" HorizontalAlignment="Center" >
    <Path.Data>
        <PathGeometry Figures="m 1 2 l 4.0525 5.2361 l 4.0527 -5.2361 z "/>
    </Path.Data>
</Path>    
Run Code Online (Sandbox Code Playgroud)

然后你需要将它改为:

<Path Fill="#FFEDEDED" StrokeThickness="1" Stroke="#FFA3A3A3" Opacity="0.7" 
            VerticalAlignment="Center" HorizontalAlignment="Center"
            Data="m 1 2 l 4.0525 5.2361 l 4.0527 -5.2361 z" />
Run Code Online (Sandbox Code Playgroud)

- 要么 -

您可以使用一种不同的方式从Inkscape导出xaml,由Tim Heuer转换SVG到XAML的问题的接受答案中描述,因为两种方式都会产生不同的xaml输出:

方法(是的,超级):

  • 使用Inkscape保存为PDF

  • 将文件名扩展名从PDF重命名为AI

  • 使用Expression Design打开AI文档

  • 导出到Silverlight Canvas

更新时间(2015-08-25)

我发现自己越来越多地使用第二种("黑客")方式而不是第一种(更直接)方式,因为它创造了更多"可预期的"XAML,就像我所说的那样.

  • @testing我导出为"XAML Silverlight 4/WPF Canvas",所有效果都是光栅化的:http://i.imgur.com/YX33cAD.png.导出文件名也完全取决于您(只需添加.xaml扩展名) (2认同)

Ale*_*aum 2

请看一下这篇文章: 将 SVG 图形转换为 XAML Metro 图​​标 您可以在这里找到一种通过转换为 XPS 进行转换的方法。

您还可以使用Svg2Xaml转换器。