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

如何在windows8/WinRT中将SVG文件转换为XAML,xaml,c#-4.0,svg,windows-8,windows-runtime,Xaml,C# 4.0,Svg,Windows 8,Windows Runtime,如何在windows 8/WinRT中将SVG文件转换为XAML。我不熟悉这个XAML/SVG环境。所以任何人都可以帮我在Windows8中实现同样的功能。我需要解析这个svg文件,并需要通过代码显示页面中的内容。有用于C#的svg呈现库。我没有试过,但你应该可以通过谷歌搜索找到它们 例如:请看这篇文章: 您可以在这里找到通过转换为XPS进行转换的方法 您也可以使用转换器。对我来说,最简单的方法是: 在自由矢量绘图工具中打开.svg文件 另存为“Microsoft XAML(*.XAML)” 此

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

有用于C#的svg呈现库。我没有试过,但你应该可以通过谷歌搜索找到它们


例如:

请看这篇文章: 您可以在这里找到通过转换为XPS进行转换的方法


您也可以使用转换器。

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

  • 在自由矢量绘图工具中打开.svg文件
  • 另存为“Microsoft XAML(*.XAML)”
  • 此外,您可能需要在转换后稍微更新结果输出文件,因为并非所有XAML处理引擎都支持将字符串转换为数字(如接受的答案中所述)。因此,例如,如果您有:

    <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>    
    
    
    
    然后您需要将其更改为:

    <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" />
    
    
    
    -或-

    您可以使用稍微不同的方法从导出xaml,这是Tim Heuer在问题的公认答案中描述的,因为这两种方法都会产生不同的xaml输出:

    方法(是,超级ack):

    • 使用Inkscape另存为PDF

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

    • 使用表达式设计打开AI文档

    • 导出到Silverlight画布

    更新(2015-08-25)


    我发现自己越来越多地使用第二种(“hack”)方式,而不是第一种(更直接的)方式,因为它创建了更多我称之为“可期待的”XAML。

    我欺骗并将SVG转换为字体。首先,我创建了SVG,然后使用IcoMoon创建了字体

    我将字体的ttf和内容一起下载到我的资产文件夹中

    接下来我添加代码。请注意字体文件名,然后是#,然后是字体名称。案文应为:

        <TextBlock Text="&#xe901;" FontFamily="/Assets/icomoon.ttf#icomoon" FontSize="45"</TextBlock>
    

    虽然SVG和XAML本质上相似,但它们并不相同。。。我不知道你想做什么?您是否只需要为开发目的进行一次性“解析”?为此,Adobe Illustrator有Xaml导出器,Microsoft Expression Design 4现在是免费的。。。不,我需要通过代码解析svg文件,这是用来绘制地图的。我将以SVG文件的形式获取地图边界,我需要在运行时解析它并在画布上绘制它使用WinJs而不是Xaml或托管浏览器。两者都可以以本机方式显示SVG内容。我尝试了很多。。但是windows 8中缺少使用的大多数库。您提到的项目也有同样的问题。+1,尽管这仍然感觉像是黑客攻击。有人会认为,到现在为止,这些工具会给你一种方法来保存它,就像你想要保存它一样。@JesseChisholm我也觉得它确实像是一个黑客!但即使在今天的Windows10开发中,它仍然可以工作:)注意,当您保存为xaml时,Inkspace有一个“Silverlight兼容”选项。你能检查一下这是否解决了你的问题吗?我不使用Silverlight如果我尝试使用我得到的
    表达式设计
    方法,则无法将文本值“F1 M 0,0L 46.5193,0L 46.5193,46.5193L 0,46.5193L 0,0”分配到“矩形几何体”类型的属性“Clip”中。您使用哪种导出选项
    XAML Silverlight 3画布
    XAML Silverlight 4/WPF画布
    。您的其他设置(文本、实时效果等)是什么?svg/pdf/ai是否需要一定的大小?哪一个?当您想要嵌入xaml时,您使用什么名称<代码>矢量图形.xaml
    ?@测试我导出为“xaml Silverlight 4/WPF画布”,所有效果均光栅化:。此外,导出文件名完全由您决定(只需添加.xaml扩展名)