在 WPF 程序中使用矢量图
我们可以在 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 程序中使用矢量图相关推荐
- WPF程序中的XPSDocumentViewer
在.NET 3.0中,提供了对XPS文件格式的全新支持.在WPF程序中,有一个控件是DocumentViewer.这里对它的使用做一个简要介绍 <Window x:Class="Wpf ...
- powerdesigner怎么导出pdf_各种科研绘图软件中的矢量图导出技巧
引言 科技论文常含有插图,借助插图来形象直观.简明扼要地表达所要表述的内容(梁福军. 科技论文规范写作与编辑[M]. 清华大学出版社, 2014.).科研绘图软件有很多种,而软件导出的图片可以分为矢量 ...
- 解决WPF程序中ListBox ItemsSource变化时不重置ScrollBar的问题
解决WPF程序中ListBox ItemsSource变化时不重置ScrollBar的问题 参考文章: (1)解决WPF程序中ListBox ItemsSource变化时不重置ScrollBar的问题 ...
- Android tips(十二)--Android开发中使用矢量图
转载请标明出处:一片枫叶的专栏 本文我们将介绍一些关于Android矢量图的相关知识点.最新的项目中要求以矢量图替代传统的.png资源文件,所以特意学习了一下Android中的矢量图相关概念,不得不说 ...
- 学习OpenCV(7) 在WPF程序中使用EmguCV
在WPF程序中使用EmguCV 在WPF中使用EmguCV主要要处理的是ImageBox控件在WPF页面上的使用和如何利用WPF的双向数据绑定来向ImageBox上显示图片. 新建WPF应用 使用VS ...
- Android开发中使用矢量图
本文我们将介绍一些关于Android矢量图的相关知识点.最新的项目中要求以矢量图替代传统的.png资源文件,所以特意学习了一下Android中的矢量图相关概念,不得不说矢量图还是一个比较好的适配方案. ...
- Illustrator 教程:如何在 Illustrator 中对矢量图进行变形、定形和塑形?
欢迎观看illustrator教程,小编带大家学习 illustrator 的基本工具和使用技巧,了解如何在 illustrator 中不改变其他区域的情况下对矢量图的一部分进行平滑调整. 打开文件中 ...
- 微信小程序中使用echarts图
嗨喽大家好,我是老黑.最近这段时间完成了一个功能,那就是在微信小程序中引入了echarts图,也算是对这段时间的工作的一个总结吧.这个功能自己花费了很长的时间才整出来.后来自己反省了以下,总结了以 ...
- 微信小程序使用阿里矢量图自定义icon
在微信小程序中使用icon 1.在阿里矢量图官网选好图标加入我的项目,在项目中点击Font class和查看在线链接, 2.然后会生成链接地址,点击进入 3.复制代码 4.在微信开发者工具中创建样式文 ...
- 在html页面中加入矢量图,HTML页面插入SVG的多种方式
SVG (Scalable Vector Graphics) 可缩放矢量图,是一种基于XML语法的图像格式.其他图像格式都是基于像素处理的,SVG则是属于对图像的形状描述,所以它本质上是文本文件,体积 ...
最新文章
- 网易实时数仓实践与展望
- 服务机器人平台和后台
- Boost::context模块callcc的解析器测试程序
- 给网页穿上Word马甲
- html+css+js实现关键词随机图片
- 对CSS选择器的理解
- Linux使用命令刻录镜像到U盘
- 【算法】非线性动力学混沌、分岔图、最大李雅普诺夫指数等
- 阿里云短信验证码发送类
- 42道计算机网络面试高频题+答案,面试官喜欢的答案都在这里
- UFS开发板代码分析
- 基于TCP/UDP的NIO服务端/客户端代码实现damo(java)
- CRM IFD部署更换证书 - adfs证书更换
- 自由职业一段时间后的感悟
- 做淘宝页面前的基础准备
- 3.摄像模组之Golden模组
- v-model的基本使用
- StreamWriter
- Chromium架构
- dva数据流实现自动(调用接口)刷新页面数据【React-Redux框架】