我想在我的应用程序中看到漂亮的矢量图形。谁不是? = d
经过一番研究后,我发现有SVG
个文件格式(以及其他一些格式),但是WPF
(尽管它的信条矢量图形,blablabla )并没有这样做。 t支持它。
我尝试了两个svg库,但它们真的是垃圾(所以我不会说出他们的名字)。
然后我发现Inkscape
(免费的svg-editor)可以将svg文件保存为xaml文件。这是一个和平的文件:
<?xml version="1.0" encoding="UTF-8"?>
<Viewbox xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" Stretch="Uniform">
<Canvas Name="svg2" Width="744" Height="1052">
<Canvas.Resources>
<!--Unknown tag: inkscape:perspective-->
</Canvas.Resources>
<!--Unknown tag: sodipodi:namedview-->
<!--Unknown tag: metadata-->
<Canvas Name="layer1">
<Canvas Name="g2987">
<Path xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Name="path2999" Fill="#FFE9E9FF">
<Path.Data><PathGeometry Figures="m 299.04734 376.6985 ........
现在我的问题是如何使用这些xaml文件?我找到了this的答案,但我仍然不知道如何在按钮内显示漂亮的矢量内容。它位于另一个 xaml中的Viewbox
(不在定义窗口/应用程序的位置)。
如何组织它以便能够轻松显示它,例如:
<Button>
<Button.Content> ... display it here somehow </Button.Content>
</Button>
并将其保留为单独的文件(不要复制内容或其他内容),以便我可以轻松更改或使用Inkscape进行编辑。
我考虑过资源词典,但我可以弄清楚它会是什么样子。
PS:从其他角度来看,我可以编写小转换器,以便将原始文件保存为SVG
,然后将其导出为xaml
,最后运行我的转换器使其成为<强大的东西然后我可以轻松地将内容分配给按钮。我需要指导一下这样的东西,仍然是单独的xaml 以及如何将它作为内容附加到按钮上。
答案 0 :(得分:6)
首先创建ResourceDictionary 将导出的视图框添加到其中并向其添加唯一键
<ResourceDictionary>
<Viewbox xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" Stretch="Uniform" x:Key="buttonContent">
<Canvas Name="svg2" Width="744" Height="1052">
...
将字典合并到您的窗口或用户控件甚至整个应用程序
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="ButtonDictionary.xaml" />
</ResourceDictionary.MergedDictionaries>
...
然后按如下方式使用它来使用按钮
<Button Content="{StaticResource buttonContent}">
这是创建资源字典并使用它们的示例