2016-09-27 159 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>