【问题标题】:Using XAML vector graphics in WPF application在 WPF 应用程序中使用 XAML 矢量图形
【发布时间】:2009-06-17 13:57:58
【问题描述】:

我有一个在 XAML 中定义的矢量图像。在 WPF 应用程序中使用此资源的正确方法是什么?

我想在自己的 XAML 文件中包含矢量图像,然后将图像添加到我的应用程序中的其他用户控件。我的 XAML 矢量图像中的顶级元素应该是什么?如何在其他用户控件中引用该图像?

【问题讨论】:

标签: wpf xaml vector-graphics


【解决方案1】:

http://learnwpf.com/post/2006/06/04/How-do-I-Include-Vector-Based-Image-Resources-in-my-WPF-Application.aspx 解释了如何做到这一点。

<ContentControl Template="{StaticResource Credit-Card}" />

【讨论】:

  • 这里不做解释(应该是回答网站),链接中的几个链接都死了。投反对票,抱歉。
【解决方案2】:

在 WPF 和 Silverlight 中以可重用的方式使用矢量图形是极其困难的。

这两个 StackOverflow 问题讨论了一些可用选项:

XAML Icons - How to use?

WPF What is the correct way of using SVG files as icons in WPF

阅读完这些问题和答案后,我认为最好的解决方案是坚持使用像 PNG 这样的位图/光栅格式,直到 Microsoft 决定支持 SVG。

【讨论】:

  • “极难以可重用的方式使用矢量图形”是什么意思?
  • 如果您想在应用程序的多个地方重复使用图标,您需要创建一个用户控件来封装画布或绘图或路径向量。如果您需要更改图标,则需要修改此控件。相比之下,引用 PNG 或 BMP 图像文件并根据需要进行更新要容易得多。
  • 替换一个xaml文件或者替换一个bmp文件。我看那里没有太大区别。但是,如果您说 bmp 编辑器和 xaml 编辑器一样多且可能更好,那您是对的。
  • 也许“可重用”不是一个好的词选择。在 XAML 中处理矢量图形需要比处理光栅图像时更多的步骤。除非平滑缩放是核心要求,否则我认为不值得权衡。 (但这可能会随着工具的改进而改变。)
  • @dthrasher“在 XAML 中使用矢量图形...”考虑到 WPF/Silverlight 是基于 XAML 的,至少可以说很奇怪。
【解决方案3】:

以下是如何以可重复使用的样式方式进行操作:

https://github.com/alansingfield/VectorIcon/blob/master/README.md

 <Style x:Key="CarIcon" 
        TargetType="local:VectorIcon">
    <Style.Setters>
      <Setter Property="Geometry">
        <Setter.Value>
          <PathGeometry Figures="M18,18H6V6H18M18,4H6A2,2 0 0,0 4,6V18A2,2 0 0,0 6,20H18A2,2 0 0,0 20,18V6C20,4.89 19.1,4 18,4Z" />
        </Setter.Value>
      </Setter>
    </Style.Setters>
  </Style>


<local:VectorIcon Style="{StaticResource CarIcon}" Foreground="Green"/>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-14
    • 1970-01-01
    • 2013-01-25
    • 2016-11-11
    • 1970-01-01
    相关资源
    最近更新 更多