【问题标题】:Inkscape (vector graphic)Inkscape(矢量图形)
【发布时间】:2014-06-03 12:48:31
【问题描述】:

我想在我的应用程序中拥有漂亮的矢量图形。谁不呢? =D

经过一番研究,我发现有SVG 文件格式(和其他一些格式),但WPF(尽管它的信条矢量图,blablabla)不支持它。 p>

我尝试了两个 svg 库,但它们真的很垃圾(所以我不会说出它们的名字)。

然后我发现Inkscape(免费的svg-editor)可以将svg-files保存为xaml-files。这是一个和平的文件:

<?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 的答案,但我仍然不知道如何在按钮内显示我漂亮的矢量内容。 Viewbox 位于 another xaml(不在定义窗口/应用程序的位置)。

如何以一种能够轻松显示的方式组织它,例如:

<Button>
    <Button.Content> ... display it here somehow </Button.Content>
</Button>

并将其保存为单独的文件(不要复制内容或其他任何内容),以便我可以轻松更改它或使用 Inkscape 进行编辑。

我想过资源字典,但我可以弄清楚它是什么样子的。

P.S.:换个角度看,我可以写个小转换器,这样原始文件会保存为SVG,然后我将它们导出为xaml,最后运行我的转换器来制作它something 然后我可以轻松地将其作为内容分配给按钮。我需要指导它看起来如何,仍然是单独的 xaml 以及如何将它作为内容实际附加到按钮。

【问题讨论】:

  • 投反对票,不清楚我在问什么:如何将Viewbox分配给按钮内容?或者我应该怎么做才能分配@生成的xaml 987654332@ 作为按钮内容。

标签: c# wpf svg inkscape


【解决方案1】:

从创建 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}">

这是一个创建资源字典并使用它们的示例

【讨论】:

  • x:Shared="False" 是这个答案的重要补充。最终解决方案(我在一年后使用)是保留Canvas 作为 svg 文件的根元素,以便将一堆画布(每个 svg 文件一个)组合成单个资源字典,它们都有键和然后我在我想显示它们的地方使用ViewBox(因为我希望能够设置视图框大小)。
猜你喜欢
  • 2012-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-14
  • 2011-04-30
相关资源
最近更新 更多