<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
在WPF的DrawingContext物件中,提供了基本的繪製橢圓和矩形的API:DrawEllipse和DrawRectangle。但是,這些是遠遠不夠用的,我們在日常應用中,更多的是使用DrawGeometry函數,它可以繪製更多複雜的幾何圖形,並且提供了許多強大而易用的函數,在大多數場景下,甚至可以取代DrawEllipse和DrawRectangle函數。
在WPF圖形體系中,Geometry類表示幾何圖形的基礎類別,使用的時候是範例化它的一些子類,具體的有:
線段:LineGeometry
路徑集合圖形PathGeometry裡可以包含一系列幾何圖形集合,常見的有:
貝塞爾曲線:貝塞爾曲線系列還比較多,具體有如下幾種:
BezierSegment:在兩個點之間建立一條三次方貝塞爾曲線。
PolyBezierSegment:建立一系列三次方貝塞爾曲線。
PolyQuadraticBezierSegment:建立一系列二次貝塞爾曲線。
QuadraticBezierSegment:建立一條二次貝塞爾曲線。
除了這種組合的方式之外,系統還提供了一個通過一系列API來繪製的StreamGeometry。它不支援繫結,動畫,相應也更加靈活而高效。
StreamGeometry geometry = new StreamGeometry; using (StreamGeometryContext ctx = geometry.Open()) { ctx.BeginFigure(new Point(10, 100), true , true); ctx.LineTo(new Point(100, 100), true , false); ctx.LineTo(new Point(100, 50), true, false); }
使用GeometryGroup、CombinedGeometry或者通過呼叫靜態的Geometry方法Combine,可以建立複合幾何圖形物件。它們主要的區別是:
CombinedGeometry對子圖形進行疊加操作,沒有面積的子圖形將被丟棄。只能組合兩個子圖形(但是這兩個子圖形也可以是複合幾何圖形)。GeometryGroup只進行組合,而不進行面積疊加。可以新增多個子圖形。有關範例,請參見如何:建立複合形狀。
CombinedGeometry的疊加方式有四種:Union、Intersect、Exclude和Xor,它們的效果為:
這些在我們的日常應用中是非常有用的,具體範例請參看MSDN文章: 如何:建立複合形狀和如何:建立組合的幾何圖形。
Geometry物件中本身還包含了一系列非常有用的方法,如:
這些都是非常常用的方法,例如FillContains,StrokeContains用於滑鼠命中測試是非常方便的。
Geometry物件並不能作為影象獨立呈現出來,它一般有如下幾種呈現方式:
可以作為GeometryDrawing.Geometry的引數呈現為Path物件
<Path Stroke="Black" StrokeThickness="1" > <Path.Data> <LineGeometry StartPoint="10,20" EndPoint="100,130" /> </Path.Data> </Path>
這種方式下寫一些簡單的幾何圖形還行,但對於PathGeometry來說有些冗繁,因此XAML採用了一種簡單的路徑標記語法來簡化這一過程,
<Path Stroke="Black" Fill="Gray"> <Path.Data> <PathGeometry Figures="M 10,100 C 10,300 300,-200 300,100" /> </Path.Data> </Path>
甚至可以直接簡化為:
<Path Stroke="Black" Fill="Gray" Data="M 10,100 C 10,300 300,-200 300,100" />
這種語法在一些第三方向量圖轉換過來的檔案中非常常見,如果能熟練掌握的話,寫一些簡單的幾何圖形也是非常方便的。
可以作為DrawingContext. DrawGeometry的引數呈現,這種方式後面的文章中做會更多的說明,這裡就不多介紹了。
可以作為GeometryDrawing.Geometry的引數呈現為Drawing物件
<GeometryDrawing Brush="MediumBlue"> <GeometryDrawing.Geometry> <GeometryGroup> <EllipseGeometry RadiusX="20" RadiusY="45" Center="50,50" /> <EllipseGeometry RadiusX="45" RadiusY="20" Center="50,50" /> </GeometryGroup> </GeometryDrawing.Geometry> </GeometryDrawing>
當然,Drawing物件也不能獨立呈現,一般是作為DrawingBrush或作為DrawingContext.DrawDrawing的引數來使用的
<Image Source="sampleImagesWaterlilies.jpg" Width="200" Height="150" HorizontalAlignment="Left"> <Image.Clip> <EllipseGeometry RadiusX="100" RadiusY="75" Center="100,75"/> </Image.Clip> </Image>
另外,也常用在DrawingGroup.ClipGeometry和DrawingContext.PushClip中裁剪影象。
可以將PathGeometry物件定義的幾何路徑旋轉(轉動)物件的路徑。
Geometry的功能是非常強大的,本文這裡只是對其主要功能做了一個簡單的介紹,後面的文章中,將會更多的用例子來介紹一下它的用法。
到此這篇關於WPF使用Geometry繪製幾何圖形的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45