2016-09-27 120 views
1

我知道这个问题已经得到解答,因为我遵循了这些答案的指示。我有一个图标的.SVG图像,我试图将其转换为可用的XAML代码,我正在使用像这样的图像;将SVG转换为XAML

<ControlTemplate x:Uid="ControlTemplate_9" x:Key="IconTemplate"> 
    <Viewbox xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" Stretch="Uniform"> 
    <Canvas Name="svg2" Width="24" Height="16" ToolTip="IconToolTip."> 
     <Canvas.RenderTransform> 
     <TranslateTransform X="0" Y="0"/> 
     </Canvas.RenderTransform> 
     <Canvas.Resources/> 
     <Path xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Name="path16" Fill="#FFFCF0F0"> 
     <Path.Data> 
      <PathGeometry Figures=" M 22.30" FillRule="NonZero"/> 
     </Path.Data> 
     </Path> 
    </Canvas> 
    </Viewbox> 
</ControlTemplate> 

当我拿起这个系统,其中大部分已经提供,但我的问题是增加更多。当使用程序如Inkscape或打印到PDF,打开我的线沿线的越来越.XAML的.fpage文件 -

<?xml version="1.0" encoding="UTF-8"?> 
<!--This file is NOT compatible with Silverlight--> 
<Viewbox xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" Stretch="Uniform"> 
    <Canvas Name="svg2" Width="24" Height="16"> 
     <Canvas.RenderTransform> 
      <TranslateTransform X="0" Y="0"/> 
     </Canvas.RenderTransform> 
     <Canvas.Resources/> 
     <!--Unknown tag: metadata--> 
     <!--Unknown tag: sodipodi:namedview--> 
     <Rectangle xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="24" Height="16" RadiusX="4" RadiusY="4" Name="Rounded_Rectangle_1" Fill="#000000"/> 
     <Rectangle xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Canvas.Left="11" Canvas.Top="3" Width="2" Height="6" Name="rect9" Fill="#000000"/> 
     <Image xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Name="image11" Canvas.Left="11" Canvas.Top="11" Source="data:img/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACAQAAAABazTCJAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QAAKqNIzIAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAAHdElNRQfgCRoPHAwMuTLjAAAADElEQVQI12M4wHAAAAMEAYHFO6KpAAAAAElFTkSuQmCC" Width="2" Height="2"/> 
    </Canvas> 
</Viewbox> 

后者将无法编译,并导致程序崩溃。因此,我对前面问题的扩展是,如何在代码库中使用后者的XAML,而不直接在项目文件夹中有图像,或者如何将其转换为可用的路径数据。

回答

0

我所做的和实际的工作完全是使用XML删除所有部分:

<Viewbox Stretch="Uniform"> 
    <Canvas Name="svg2" Width="24" Height="16"> 
    <Canvas.RenderTransform> 
     <TranslateTransform X="0" Y="0"/> 
    </Canvas.RenderTransform> 
    <Canvas.Resources/> 
    <Rectangle Width="24" Height="16" RadiusX="4" RadiusY="4" Name="Rounded_Rectangle_1" Fill="#000000"/> 
    <Rectangle Canvas.Left="11" Canvas.Top="3" Width="2" Height="6" Name="rect9" Fill="#000000"/> 
    <Image Name="image11" Canvas.Left="11" Canvas.Top="11" Source="data:img/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACAQAAAABazTCJAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QAAKqNIzIAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAAHdElNRQfgCRoPHAwMuTLjAAAADElEQVQI12M4wHAAAAMEAYHFO6KpAAAAAElFTkSuQmCC" Width="2" Height="2"/> 
    </Canvas> 
</Viewbox> 

而且我已经将它们添加到ResourceDictionary中,这样他们就可以在整个项目中使用。

<Viewbox x:Key="MyIcon" x:Shared="False" Stretch="Uniform"> 
    <Canvas Name="svg2" Width="24" Height="16"> 
    <Canvas.RenderTransform> 
     <TranslateTransform X="0" Y="0"/> 
    </Canvas.RenderTransform> 
    <Canvas.Resources/> 
    <Rectangle Width="24" Height="16" RadiusX="4" RadiusY="4" Name="Rounded_Rectangle_1" Fill="#000000"/> 
    <Rectangle Canvas.Left="11" Canvas.Top="3" Width="2" Height="6" Name="rect9" Fill="#000000"/> 
    <Image Name="image11" Canvas.Left="11" Canvas.Top="11" Source="data:img/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACAQAAAABazTCJAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QAAKqNIzIAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAAHdElNRQfgCRoPHAwMuTLjAAAADElEQVQI12M4wHAAAAMEAYHFO6KpAAAAAElFTkSuQmCC" Width="2" Height="2"/> 
    </Canvas> 
</Viewbox>