【问题标题】:Using vector images in wpf在 wpf 中使用矢量图像
【发布时间】:2019-11-10 01:20:16
【问题描述】:

我正在 VS2019 中创建一个 wpf 应用程序,我想使用一些矢量图像作为图像,而不是按钮或任何东西。我已经成功地将测试图像转换为 .xaml 文件,并且图像甚至会正确显示在 IntelliSense 中(当查看 image.xaml 文件本身时),但这是我所能得到的。

我确实花了一整天时间搜索网络和各种教程都无济于事,但这就是我想要做的:https://msadowski.github.io/WPF-vector-graphics-tutorial/

但是,如果您注意到该教程中的 NASA.xaml 文件如下所示:

<ResourceDictionary  xmlns:...>
    <Geometry x:Key="NASA_logogeometry1"...>
    <Geometry x:Key="NASA_logogeometry2"...>
    ...

但后来在 App.xaml 中将 ResourceDictionary Source 设置为“Assets/NASA.xaml”,并在 MainWindow.xaml 中将其 Source 设置为“StaticResource NASA_logoDrawingImage”创建图像对象......但它从未显示徽标的方式实际上获得了密钥“NASA_logoDrawingImage”,使其成为静态资源。

当我这样做时,在我的矢量图像 x:keys 中给出所有 250 个路径,显然永远找不到 StaticResource。如果我不使用资源字典并将路径全部包装在 Canvas 中,则无法在 Canvas 中设置键,也无法在 MainWindow.xaml 中设置图像的源,

<Image Source="images/image.xaml" >

我收到“找不到组件”错误(即使文件就在解决方案资源管理器的图像文件夹中。

我想要做的就是在项目中使用这个 .xaml 矢量文件作为图像。假设我从原始矢量数据(...)开始,我需要做什么才能使其正常工作(即我用什么对象包装路径,如何使用密钥才能使用 image.xaml 文件作为静态资源,或其他)?

【问题讨论】:

  • XAML 文件不能用作 Image 元素的 Source。声明DrawingImage 类型的资源并写入&lt;Image Source="{StaticResource TheDrawingImageResourceKey}"/&gt;。或者,声明一个 GeometryGroup 资源并将其分配给 Path 元素的 Data 属性。
  • 有关概述,请从此处开始阅读:Graphics and Multimedia
  • 我讨厌这样。当人们写博客据说是向你展示如何做某事时,它不可能工作。要么他不小心错过了使用这些几何图形的几个解释步骤,要么他知道他在做什么是行不通的。即使是最简短的评论也应该发现选项 1。我会考虑在 inkscape 中组合这些几何图形,因此如果永远不会单独使用各个位,则只有蓝色和红色的几何图形。
  • @Clemens:我尝试使用 DrawingImage,但它没有出现在 IntelliSense 中。我应该在 标记中使用某个命名空间以允许使用 DrawingImages?
  • @Andy:我知道,对吧!?我认为正是他没有展示的那一步是所有教程似乎都没有清楚地涵盖的内容。我认为 Clemens 认为问题在于不知道如何包装矢量数据。所有教程(如下面答案中的链接)似乎都旨在使矢量图像成为按钮或其他东西的一部分,因此使用 似乎不想用作图像。

标签: c# wpf xaml


【解决方案1】:

知道了!这是我所做的:

  1. 下载的表达式设计 4. 这样我可以直接打开 image.eps 文件并将其导出为 XAML WPF 资源字典。这使得所有 .xaml 代码都整齐地替换了 GeometryDrawing 的所有路径。

  2. 将 image.xaml 文件添加到图像文件夹中。表达式将矢量包装为画笔,所以我只需要更改:

    <DrawingBrush> <DrawingBrush.Drawing> <DrawingGroup> <DrawingGroup.Children> Vector Here...

到:

<DrawingImage>
   <DrawingImage.Drawing>
      <DrawingGroup>
         <DrawingGroup.Children>
                  Vector Here...

我认为部分原因是 DrawingImage 不喜欢路径,或者我没有正确包装它们。

  1. 在 App.xaml 中添加了资源声明,如教程所示。
  2. 此时,在 MainWindow.xaml 中键入:

&lt;Image Source="{StaticResource KeyNameUsedInImage}"/&gt;

仍然会抛出一些不同的错误,例如找不到资源。我重建了几次解决方案,并通过在属性中将 image.xaml 的构建操作更改为“资源”来设法消除错误,但仍然没有图像。

  1. 最后,我点击了上面的 Image 对象,进入右侧的属性窗口,进入“Common -> Source”,然后点击“...”按钮之外最右侧的小复选框。悬停在“本地资源”上显示“KeyNameUsedInImage”,我点击了它。然后图像立即出现。

在我阅读的 1000 篇教程中,我从未见过第 5 步,因此我认为其中大部分是 VS2019 中的某种错误,因此第 5 步不应该是必需的。但是,我提到它以防万一它对未来的人有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多