前面示例中,其中一种形状Path使用Geometry来绘图。Geometry元素也用于其他地方,如用于DrawingBrush。

在某些方面,Geometry元素非常类似于形状。与Line、Ellipse和Rectangle形状一样,也有绘制这些形状的Geometry元素:LineGeometry、EllipseGeometry和RectangleGeometry。形状与几何图形有显著的区别。Shape是一个FrameworkElement,可以用于把派生自UIElement的任意类用作其子元素。FramewrokElement派生自UIElement。形状会参与系统的布局,并呈现自身。而Geometry类不呈现自身,特性与系统开销也比Shape类少。Geometry类直接派生自DependencyObject。

Path类使用Geometry来绘图。几何图形可用用Path的Data属性设置。可以设置的简单的几何图形元素有绘制椭圆的EllipseGeometry、绘制线条的LineGeometry和绘制矩形的RectangleGeometry。

1. 使用段的几何图形

也可以使用段来创建几何图形。几何图形类PathGeometry使用段来绘图。下面的代码段使用BezierSegment和LineSegment元素绘制一个红色的图形和一个绿色的图形,如下图所示,第一个BezierSegment在图形的起点(70,40)、终点(150,63)、控制点(90,37)和(130,46)之间绘制了一条贝塞尔曲线。下面的LineSegment使用贝塞尔曲线的终点和(120,110)绘制了一条线段:

        <Canvas><Path Canvas.Left="0" Canvas.Top="0" Fill="Red" Stroke="Blue" StrokeThickness="2.5"><Path.Data><GeometryGroup><PathGeometry><PathGeometry.Figures><PathFigure StartPoint="70,40" IsClosed="True"><PathFigure.Segments><BezierSegment Point1="90,37" Point2="130,46"Point3="150,63"/><LineSegment Point="120,110"/><BezierSegment Point1="100,95" Point2="70,90"Point3="45,91"/></PathFigure.Segments></PathFigure></PathGeometry.Figures></PathGeometry></GeometryGroup></Path.Data></Path><Path Canvas.Left="0" Canvas.Top="0" Fill="Green" Stroke="Blue" StrokeThickness="2.5"><Path.Data><GeometryGroup><PathGeometry><PathGeometry.Figures><PathFigure StartPoint="160,70"><PathFigure.Segments><BezierSegment Point1="175,85" Point2="200,99" Point3="215,100"/><LineSegment Point="195,148"/><BezierSegment Point1="174,150" Point2="142,140" Point3="129,115"/><LineSegment Point="160,70"/></PathFigure.Segments></PathFigure></PathGeometry.Figures></PathGeometry></GeometryGroup></Path.Data></Path></Canvas>

除了BezierSgement和LineSegment元素之外,还可以使用ArcSegment元素在两点之间绘制椭圆狐。使用PolyLineSegment可以绘制一组线段,PolyBezierSegment由多条贝塞尔曲线组成,QuadraticBezierSegment创建一条二次贝塞尔曲线,PolyQuadraticBezierSgement由多条二次贝塞尔曲线组成。

2. 使用Path标记语法的几何图形

Path标记语法可以与Path类的Data属性一起使用。特殊字符定义点的连接方式。在下面的示例中,M标记起点,L是到指定点的线条命令,Z是闭合图形的笔和命令。下图显示了这个绘图操作的结果。Path标记语法允许使用更多的命令,如水平线(H)、垂直线(V)、三次贝塞尔曲线(C)、二次贝塞尔曲线(Q)、光滑的三次贝塞尔曲线(S)、光滑的二次贝塞尔曲线(T),以及椭圆弧(A):

    <Canvas><Path Canvas.Left="0" Canvas.Top="200" Fill="Yellow" Stroke="Blue"StrokeThickness="2.5"Data="M 120,5 L 128,80 L 220,50 L 160,130 L 190,220 L 100,150 L 80,230 L 60,140 L 0,110 L 70,80 Z" StrokeLineJoin="Round"/></Canvas>

3. 几何图形(Geometry)相关推荐

  1. WPF中的形状Shape与几何图形Geometry详解

    总目录 文章目录 总目录 一.Shape(形状) 1.Shape基本信息 2.Ellipse 1.案例 2.说明 3.Rectangle 1.案例 2.说明 4.Line 1.案例 2.说明 5.Po ...

  2. WPF的二维绘图(二)——几何图形Geometry

    在WPF的DrawingContext对象中,提供了基本的绘制椭圆和矩形的API:DrawEllipse和DrawRectangle.但是,这些是远远不够用的,我们在日常应用中,更多的是使用DrawG ...

  3. WPF之几何图形Geometry

    在WPF的DrawingContext对象中,提供了基本的绘制椭圆和矩形的API:DrawEllipse和DrawRectangle.但是,这些是远远不够用的,我们在日常应用中,更多的是使用DrawG ...

  4. SpringBoot+Vue+Openlayers实现地图上新增和编辑坐标并保存提交

    场景 若依前后端分离版手把手教你本地搭建环境并运行项目: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/108465662 Vue ...

  5. Geospark-SQL加载SHP数据

    title: (六)Geospark SQL加载SHP数据(JAVA版) date: 2021-05-08 09:29:06 tags: GeoSpark GeoSpark SQL默认是无法读取Shp ...

  6. 常用数学术语中英文表达对照

    本文整理和收集常用数学术语的中英文表达对照信息,旨在为大家阅读英文数学材料提供方便.文中如有不准确或错误之处,大家可在评论区反馈,在查阅相关资料核准后会进行修改. 中文表达 英文表达 负数 negat ...

  7. SQL Server - sql 空间数据

    以geometry为例,geography类似 目录 基础功能 创建空间表 录入数据 计算面积 转WKB 转WKT 转地理标记语言 (GML) 创建geometry实例 获得集合中的实例 STPoin ...

  8. Esri-Geometry-Api-Java 笔记

    原生几何类型 点 点表示空间中的单个位置,是所有其他几何类型的构建块.一个点至少有一个 x 坐标和一个 y 坐标.点的坐标可以是直线单位,如英尺或米,也可以是角度单位,如度或弧度.相关联的空间引用指定 ...

  9. [jimmyzhouj 翻译] Nehe iOS OpenGL ES 2.0教程 --Lesson 02

    http://jimmyzhouj.blog.51cto.com/2317513/883520 原创作品,允许转载,转载时请务必以超链接形式标明文章  原始出处 .作者信息和本声明.否则将追究法律责任 ...

  10. cesium如何设置Primitive旋转

    Cesium是一款用于创建可交互地理信息系统 (GIS) 的 JavaScript 库.在 Cesium 中,可以使用几何图形 (geometry) 和外观 (appearance) 创建图元 (pr ...

最新文章

  1. 带你了解“比特币黄金”和SegWit2x分叉
  2. 给你的博客添加个看电影的频道
  3. android:使用audiotrack 类播放wav文件
  4. 目前我国负债超过100万的大概有多少人?
  5. jpannel设置位置xy_实用的摄影技巧!10种常见摄影场景的单反相机设置技巧!
  6. python Chrome + selenium自动化测试与python爬虫获取网页数据
  7. 8种主流深度学习框架介绍
  8. 项目管理学习 总结(一)
  9. python编程(深拷贝和浅拷贝)
  10. Http协议以及Httpclient
  11. 函数节流-避免重复提交
  12. wifi 性能 测试 android,WiFi性能测试
  13. 制作PPT的常用网站及一些基本原则
  14. 各省简称 拼音 缩写_中国省市县地区首字母缩写
  15. docker部署分布式应用_Docker服务,堆栈和分布式应用程序捆绑
  16. 牛客网经典120道Java面试常见题(试题+答案)
  17. 旷视科技19届春招:算法研究员面经
  18. 计算机桌面图标设置密码,教你怎么设置电脑开机密码
  19. Minecraft 1.12.2模组开发(十八) 自定义附魔
  20. 跨时钟域问题(二)(单bit信号跨时钟域 1. 电平同步器 2. 边沿同步器 3. 脉冲检测器)

热门文章

  1. 计算机怎么发音乐,网易云音乐怎么分享音乐给别人的教程
  2. 如何使用 Reflector Keygen
  3. 使用OLED屏显示汉字
  4. uva 12307 - Smallest Enclosing Rectangle(旋转卡壳)
  5. java ico_Java 读写 ICO 图像
  6. win11资源管理器总是自动重启的解决方法
  7. python 只取数值_GitHub又放大招,Python版本的植物大战僵尸还能作弊玩!
  8. JAVA 创建文件和文件夹,删除文件和文件夹的实用工具(转载自-张长胜)
  9. 小米手机qq不读取相册照片_【qq影像读取不了照片】qq影像读取不到相册_qq影像读取不了相册...
  10. 請教阿泰一個有關水晶報表的問題