我们可以在 WPF 程序中全面地使用矢量图,除了少量特别精细的大图之外,软件内的图标等都可以使用由 Geometry 描述的矢量图。

DrawingImage

DrawingImage 继承自 ImageSource,所以 DrawingImage 可以作为 Image 的 Source,DrawingImage 对象有一个 Drawing 类型的属性 Drawing。

Drawing

Drawing 是描述 2D 绘图的抽象类,系统提供的派生类包括:

  • System.Windows.Media.DrawingGroup
  • System.Windows.Media.GeometryDrawing
  • System.Windows.Media.GlyphRunDrawing
  • System.Windows.Media.ImageDrawing
  • System.Windows.Media.VideoDrawing

其中 DrawingGroup 和 GeometryDrawing 比较常用。

DrawingGroup 作为 DrawingImage 的 Drawing

下面的示例中,使用了三个 LineGeometry 和一个 RectangleGeometry,使用了两种不同的颜色。注意,针对 LineGeomtry,一定要设置 GeometryDrawing 的 Pen,否则无法呈现出来。

<DrawingImage><DrawingImage.Drawing><DrawingGroup><GeometryDrawing><GeometryDrawing.Pen><Pen Thickness="2" Brush="Teal"/></GeometryDrawing.Pen><GeometryDrawing.Geometry><LineGeometry StartPoint="0,3" EndPoint="15,3"/></GeometryDrawing.Geometry></GeometryDrawing><GeometryDrawing><GeometryDrawing.Pen><Pen Thickness="2" Brush="Teal"/></GeometryDrawing.Pen><GeometryDrawing.Geometry><LineGeometry StartPoint="0,6" EndPoint="15,6"/></GeometryDrawing.Geometry></GeometryDrawing><GeometryDrawing><GeometryDrawing.Pen><Pen Thickness="2" Brush="Teal"/></GeometryDrawing.Pen><GeometryDrawing.Geometry><LineGeometry StartPoint="0,9" EndPoint="15,9"/></GeometryDrawing.Geometry></GeometryDrawing><GeometryDrawing Brush="Crimson"><GeometryDrawing.Geometry><RectangleGeometry Rect="17,2 22,8"></RectangleGeometry></GeometryDrawing.Geometry></GeometryDrawing></DrawingGroup></DrawingImage.Drawing>
</DrawingImage>

GeometryDrawing 作为 DrawingImage 的 Drawing

下面使用到 PathGeometry,然后该 PathGeometry 作为资源被 GeometryDrawing 使用。

<!--下载-->
<PathGeometry x:Key="DownloadIconGeometry" Figures="M40.909,0 V44.444 H27.272 L56.818,77.777 86.363,44.444 H72.727 V0 Z M9.090,66.666 V100 H109.090 V66.666 H100.000 V88.888 H18.181 V66.666 Z"/><DrawingImage x:Key="DownloadImage"><DrawingImage.Drawing><GeometryDrawing Brush="{DynamicResource IconAccentBrush}" Geometry="{DynamicResource DownloadIconGeometry}"/></DrawingImage.Drawing>
</DrawingImage>

而 GeometryDrawing 的形状用 Geometry 来描述,那么 Geometry 又是什么呢?

Geometry 的派生类

  • System.Windows.Media.CombinedGeometry
  • System.Windows.Media.EllipseGeometry
  • System.Windows.Media.GeometryGroup
  • System.Windows.Media.LineGeometry
  • System.Windows.Media.PathGeometry
  • System.Windows.Media.RectangleGeometry
  • System.Windows.Media.StreamGeometry

转载于:https://www.cnblogs.com/fujinxiang/p/GeometryImage.html

在 WPF 程序中使用矢量图相关推荐

  1. WPF程序中的XPSDocumentViewer

    在.NET 3.0中,提供了对XPS文件格式的全新支持.在WPF程序中,有一个控件是DocumentViewer.这里对它的使用做一个简要介绍 <Window x:Class="Wpf ...

  2. powerdesigner怎么导出pdf_各种科研绘图软件中的矢量图导出技巧

    引言 科技论文常含有插图,借助插图来形象直观.简明扼要地表达所要表述的内容(梁福军. 科技论文规范写作与编辑[M]. 清华大学出版社, 2014.).科研绘图软件有很多种,而软件导出的图片可以分为矢量 ...

  3. 解决WPF程序中ListBox ItemsSource变化时不重置ScrollBar的问题

    解决WPF程序中ListBox ItemsSource变化时不重置ScrollBar的问题 参考文章: (1)解决WPF程序中ListBox ItemsSource变化时不重置ScrollBar的问题 ...

  4. Android tips(十二)--Android开发中使用矢量图

    转载请标明出处:一片枫叶的专栏 本文我们将介绍一些关于Android矢量图的相关知识点.最新的项目中要求以矢量图替代传统的.png资源文件,所以特意学习了一下Android中的矢量图相关概念,不得不说 ...

  5. 学习OpenCV(7) 在WPF程序中使用EmguCV

    在WPF程序中使用EmguCV 在WPF中使用EmguCV主要要处理的是ImageBox控件在WPF页面上的使用和如何利用WPF的双向数据绑定来向ImageBox上显示图片. 新建WPF应用 使用VS ...

  6. Android开发中使用矢量图

    本文我们将介绍一些关于Android矢量图的相关知识点.最新的项目中要求以矢量图替代传统的.png资源文件,所以特意学习了一下Android中的矢量图相关概念,不得不说矢量图还是一个比较好的适配方案. ...

  7. Illustrator 教程:如何在 Illustrator 中对矢量图进行变形、定形和塑形?

    欢迎观看illustrator教程,小编带大家学习 illustrator 的基本工具和使用技巧,了解如何在 illustrator 中不改变其他区域的情况下对矢量图的一部分进行平滑调整. 打开文件中 ...

  8. 微信小程序中使用echarts图

    ​ 嗨喽大家好,我是老黑.最近这段时间完成了一个功能,那就是在微信小程序中引入了echarts图,也算是对这段时间的工作的一个总结吧.这个功能自己花费了很长的时间才整出来.后来自己反省了以下,总结了以 ...

  9. 微信小程序使用阿里矢量图自定义icon

    在微信小程序中使用icon 1.在阿里矢量图官网选好图标加入我的项目,在项目中点击Font class和查看在线链接, 2.然后会生成链接地址,点击进入 3.复制代码 4.在微信开发者工具中创建样式文 ...

  10. 在html页面中加入矢量图,HTML页面插入SVG的多种方式

    SVG (Scalable Vector Graphics) 可缩放矢量图,是一种基于XML语法的图像格式.其他图像格式都是基于像素处理的,SVG则是属于对图像的形状描述,所以它本质上是文本文件,体积 ...

最新文章

  1. 网易实时数仓实践与展望
  2. 服务机器人平台和后台
  3. Boost::context模块callcc的解析器测试程序
  4. 给网页穿上Word马甲
  5. html+css+js实现关键词随机图片
  6. 对CSS选择器的理解
  7. Linux使用命令刻录镜像到U盘
  8. 【算法】非线性动力学混沌、分岔图、最大李雅普诺夫指数等
  9. 阿里云短信验证码发送类
  10. 42道计算机网络面试高频题+答案,面试官喜欢的答案都在这里
  11. UFS开发板代码分析
  12. 基于TCP/UDP的NIO服务端/客户端代码实现damo(java)
  13. CRM IFD部署更换证书 - adfs证书更换
  14. 自由职业一段时间后的感悟
  15. 做淘宝页面前的基础准备
  16. 3.摄像模组之Golden模组
  17. v-model的基本使用
  18. StreamWriter
  19. Chromium架构
  20. dva数据流实现自动(调用接口)刷新页面数据【React-Redux框架】

热门文章

  1. Adb命令笔记 --菜鸟的笔记
  2. DNS寻址以及IP解析
  3. python模块-logging和collections以及random模块
  4. Runtime.exec使用错误导致延迟.md
  5. Windows_cmd_命令
  6. html5world笔记
  7. 1:A+B Problem
  8. [悟] 因上努力,果上随缘(转)
  9. vba 生成euc文件的方法
  10. java中的scanner用法