Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.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
Xaml 如何将位图图像更改为矢量路径';s_Xaml_Windows Phone 8_Vector - Fatal编程技术网

Xaml 如何将位图图像更改为矢量路径';s

Xaml 如何将位图图像更改为矢量路径';s,xaml,windows-phone-8,vector,Xaml,Windows Phone 8,Vector,在我的WindowsPhone8应用程序中,我使用了一组图标。这些图标以不同的大小和颜色多次使用。现在,我只是有多个png文件从同一个图标,以涵盖所有这些变种 他如何处理矢量图像?我的最终目标是将矢量路径存储到资源文件,并将其用作“图像源”,在我的视图中设置图像大小和颜色,而不是在资源文件中 假设我有这样的Canvar: <Canvas Width="76" Height="76" Clip="F1 M 0,0L 76,0L 76,76L 0,76L 0,0"> <Pa

在我的WindowsPhone8应用程序中,我使用了一组图标。这些图标以不同的大小和颜色多次使用。现在,我只是有多个png文件从同一个图标,以涵盖所有这些变种

他如何处理矢量图像?我的最终目标是将矢量路径存储到资源文件,并将其用作“图像源”,在我的视图中设置图像大小和颜色,而不是在资源文件中

假设我有这样的Canvar:

<Canvas Width="76" Height="76" Clip="F1 M 0,0L 76,0L 76,76L 0,76L 0,0">
    <Path Width="23.75" Height="49.4791" Canvas.Left="26.9167" Canvas.Top="13.8542" Stretch="Fill" Fill="#FF000000" Data="F1 M 26.9167,13.8542L 50.6666,13.8542L 50.6667,39.5833L 26.9167,63.3333L 26.9167,13.8542 Z "/>
</Canvas>

如何将其存储到资源并将其用作图像源

欢迎提出所有建议和想法,以了解如何处理此问题

更新

根据Chris W的回答,我得出了以下解决方案:

<Style x:Key="Marker" TargetType="ContentControl">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="ContentControl">
                <Canvas Width="76" Height="76">
                    <Path Fill="{TemplateBinding Foreground}" Data="m 26.9167 13.8542 23.7499 0 10e-5 25.7291 -23.75 23.75 0 -49.4791 z"></Path>
                </Canvas>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>


<ContentControl Style="{StaticResource Marker}" Foreground="Red" />

这工作正常,我可以重复使用Mrker样式并设置填充颜色。这里缺少的一点是,我应该如何调整canvas/contentControl的大小


现在画布的大小是76*76,即使我改变了输出图像的大小,仍然是相同的。如何调整画布的大小?

您的问题的第一部分是a,我认为Illustrator或其他套件也可以这样做,但要回答您的第二个问题,您可以将其制作成一个ContentControl模板,如

<Style x:Key="ReUsableResource" TargetType="ContentControl">
        <Setter Property="Height" Value="49.4791"/>
        <Setter Property="Width" Value="23.75"/>
        <Setter Property="Template">    
          <Setter.Value>
             <ControlTemplate TargetType="ContentControl">
                 <Canvas>
                       <Path Width="{TemplateBinding Width}" Height="{TemplateBinding Height}" Stretch="Fill" Fill="#FF000000" Data="F1 M 26.9167,13.8542L 50.6666,13.8542L 50.6667,39.5833L 26.9167,63.3333L 26.9167,13.8542 Z "/>
                 </Canvas>
             </ControlTemplate>
          </Setter.Value>
       </Setter>
    </Style>

然后像这样调用它

<ContentControl Width="100" Height="50" Style="{StaticResource ReUsableResource}"/>

哦,读一下评论,从Vector到XAML,另一个非常方便的资源是


希望这能有所帮助。

我认为WPF/Silverlight不支持SVG(请参阅和)。SVG是一种常见的矢量文件格式。但是,您可以将SVG转换为xaml这正是我要做的,将矢量图像转换为xaml(画布)并使用它。但最好的做法是什么呢。如何将资源中定义的画布分配给实际的ui元素(图像?)。谢谢,这样可以,但如何调整画布的大小?也更新问题。@devha若要查看已编辑的答案,只需从画布上剥离高度/宽度,并将其应用于调用ContentControl的位置更改ContentControl大小不会更改画布大小(即使我从画布上删除了高度/宽度):(@devha dude有时你需要玩一些东西来学习,我直到现在才开始加载你的路径内容,但我已经加载了,这里有一些东西。你的剪辑似乎没有任何作用,canvas.top/canvas.left声明……无法完全理解它们的用途。至于图形,请尝试我的更新答案,并注意边界宽度/高度值,这将改变它现在我剥离了其他东西。希望这有帮助。