gpt4 book ai didi

c# - Inkscape(矢量图形)

转载 作者:行者123 更新时间:2023-12-02 09:36:58 30 4
gpt4 key购买 nike

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

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

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

然后我发现Inkscape(免费的svg编辑器)可以将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答案,但我仍然不知道如何在按钮内显示漂亮的矢量内容。它的 Viewbox 位于另一个 xaml 中(不在定义窗口/应用程序的 xaml 中)。

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

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

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

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

P.S.:从其他角度来看,我可以编写一个小型转换器,以便将原始文件保留为 SVG,然后将它们导出为 xaml 并最后运行我的转换器将其变成某种东西,然后我可以轻松地将其作为内容分配给按钮。我需要指导该东西看起来是什么样子,仍然是单独的xaml,以及如何实际将其作为内容附加到按钮。

最佳答案

首先创建 ResourceDictionary将导出的 View 框添加到其中并为其添加唯一的键

<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}">

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

关于c# - Inkscape(矢量图形),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24015629/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com