当前位置:网站首页 / WPF / 正文

[Aaronyang] 写给自己的WPF4.5 笔记18[几何图形*Geometry图文并茂讲解]

时间:2015年03月13日 | 作者 : aaronyang | 分类 : WPF | 浏览: 7028次 | 评论 1

为什么要掌握?因为WPF 3D知识很多与它Geometry对比,所以我要系统学一下。

--学会用Geometry给Path的Data属性填充。

图形可以转换成路径,Path的值,当然你也可以直接使用Rectangle控件

路径当然有路径的好处了,我在Blend5公开课3中演示了很多路径的用法,例如运动路径,布局路径,剪切路径等

当然在Blend中可以快速变成路径

转换后的代码如下:

 <Path Data="M2.5,2.5 L47.5,2.5 L47.5,97.5 L2.5,97.5 z" Fill="Yellow" Height="100" Canvas.Left="94" Stretch="Fill" Stroke="Red" StrokeThickness="5" Canvas.Top="23" Width="50"/>

同理还有类似的LineGeometry,EllipseGeometry不讲了

图形可以组合,当然路径也可以组合GeometryGroup

OK,记住path后就是一个对象,而如果组合图形是2个对象,2个对象都可以有自己的事件。而path就是自己,所以path组合后的图形的性能比 各个对象拼起来的好

<GeometryGroup>加个key可以作为资源,Path的Data属性只需要staticResource引用这个资源即可。

填充规则:

 

CombinedGeometry组合几何图形,类似绘图图形的 合并,相交,取差等操作

大致结构如上,组合2个图形,怎么个组合法,都有设置

 

Transform


 

除了3种常用Geometry,对比图形中知识,也有自定义图形。那么自定义路径中怎么写?用PathGeometry

Path-> Path.Data->PathGeometry->任意数量个PathFigure(包含相关属性StartPoint,IsClosed,IsFilled,Segments)->各个PathSegment的子类(例如LineSegment,ArcSegment,BezierSegment,QuadraticBezierSegment,PolyLineSegment,PolyBezierSegment,PolyQuadraticBezierSegment

 

关于arcSegment的size应该是椭圆知识点的 长轴和短轴值(400,50) 就是椭圆的长轴等于400,总长度是800,y轴的总长度是100

 

还有2个属性 ,IsLargeArc是否大弧度,否则就是小弧度,SweepDirection反转吗?默认是Counterclockwise

关于Bezier贝塞尔曲线,比较复杂,需要3个点,创建一条线。应用还是很广的。复杂的曲线用可视化工具去画吧,学到这里只是为了更容易熟悉代码。

微图形语言,例如Blend中手动将rectangle转换成路径时候使用的Data

 <Path Data="M2.5,2.5 L47.5,2.5 L47.5,97.5 L2.5,97.5 z" Fill="Yellow" Height="100" Canvas.Left="94" Stretch="Fill" Stroke="Red" StrokeThickness="5" Canvas.Top="23" Width="50"/>

这里的Data值,解释也没意义,但是是有规律的可以看的懂的,这里不做过分讲解,会用工具画出来即可。

使用这种方式创建路径,实际使用了SteamGeometry,所以在代码中不能修改图形了。如果想,你可以

路径的简单使用,比如剪切路径

所有元素都提供了Clip属性

接下来,讲一下 *Geometry在GeometryDrawing中的使用

这里使用了Image的Source使用了DrawingImage类,它的Drawing属性,指定Drawing的子类,除了GeometryDrawing类,还有ImageDrawing,VedioDrawing,GlyphRunDrawing,或者使用DrawingGroup,组合使用这些Drawing。

Drawing这些类不能放在界面,无法显示。Image控件的Source除了可以使用DrawingImage填充图像,像背景色那种是Brush类型,就可以使用DrawingBrush填充,然后使用Geometry绘制几何图形了。DrawVisual,关于DrawVisual一看就是继承了Visual,而Visual这个类还在元素类中的顶部,比较基础了

性能补充,如果不用Path的方式画图,等同的做法,使用Canvas,然后放入很多继承Shape的图形,例如线,圆,方等,那么每个元素都会有自己的内存空间和事件处理程序,减少元素数量更好的做法就是Path元素。虽然Path可能也有局限,但肯定可以减少元素。

 

推荐您阅读更多有关于“WPF4.5,”的文章

猜你喜欢

已有1位网友发表了看法:

发表评论

必填

选填

选填

必填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

  查看权限

抖音:wpfui 工作wpf,目前主maui

招聘合肥一枚WPF工程师,跟我一个开发组,10-15K,欢迎打扰

目前在合肥市企迈科技就职

AYUI8全源码 Github地址:前往获取

杨洋(AaronYang简称AY,安徽六安人)AY唯一QQ:875556003和AY交流

高中学历,2010年开始web开发,2015年1月17日开始学习WPF

声明:AYUI7个人与商用免费,源码可购买。部分DEMO不免费

不是从我处购买的ayui7源码,我不提供任何技术服务,如果你举报从哪里买的,我可以帮你转正为我的客户,并送demo

查看捐赠

AYUI7.X MVC教程 更新如下:

第一课 第二课 程序加密教程

标签列表