如何像图片一样在C#WPF窗口中添加svg/xaml文件
本文关键字:添加 窗口 svg 文件 xaml C#WPF 何像图 一样 | 更新日期: 2023-09-27 18:25:20
如何在C#中的WPF窗口中添加.svg
文件作为图像(,png
|,jpg
)?
我使用代码
<Image HorizontalAlignment="Left" Height="53" Margin="34,39,0,0"
VerticalAlignment="Top" Width="71"
Source="Test.svg" Name="MyImage"/>
但我得到了一个错误:
Blend不支持svg格式。
我发现我可以将.svg
文件更改为.xaml
文件。但我仍然不知道如何将xaml添加为图像。
根据一个答案,我更改了我的代码如下:
<Window x:Class="NIA_UI_Demo_CSharp.ShareDocumentsWin"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:svgc="http://sharpvectors.codeplex.com/svgc/"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="ShareDocumentsWin" Height="350" Width="569">
<ResourceDictionary>
<Style x:Key="TheAwesomeXAMLimage" TargetType="ContentControl">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ContentControl">
my code
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
<Grid Margin="0,0,2,3">
<ContentControl Style="{StaticResource TheAwesomeXAMLimage}"/>
</Grid>
</Window>
但我得到了一个错误:
内容设置不止一次;
据我所知,您不能直接包含svg文件。两种选择:
- 使用可以在运行时处理svg文件的库:https://sharpvectors.codeplex.com/(已移至https://github.com/ElinamLLC/SharpVectors)
- 将svg转换为xaml,并将其与本地wpf对象一起使用(Path,Image..)
我更喜欢第二个选项,所以我写了一个工具,可以将单个svg转换为xaml,也可以批量转换一堆svg文件。工作流程是:只需将svg文件放在images文件夹中,调用批处理转换器并找到用新图标/图像更新的images.xaml文件(一个资源字典)。
请参阅https://github.com/BerndK/SvgToXaml
我很幸运,我有DevExpress,可以在那里使用WpfSvgRenderer.CreateImageSource。我不想在这里做广告,但由于它是一个广泛使用的库,可能有些人很乐意知道。
不幸的是,svg中的文本元素还不受支持。