Xaml 如何将位图图像更改为矢量路径';s
在我的WindowsPhone8应用程序中,我使用了一组图标。这些图标以不同的大小和颜色多次使用。现在,我只是有多个png文件从同一个图标,以涵盖所有这些变种 他如何处理矢量图像?我的最终目标是将矢量路径存储到资源文件,并将其用作“图像源”,在我的视图中设置图像大小和颜色,而不是在资源文件中 假设我有这样的Canvar: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
<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声明……无法完全理解它们的用途。至于图形,请尝试我的更新答案,并注意边界宽度/高度值,这将改变它现在我剥离了其他东西。希望这有帮助。