原文:
在wpf中自定義你的繪製(三)
在wpf中自定義你的繪製(三)
周銀輝圖形合併
有時候我們需要將多個圖形合併成乙個然後進行繪製,比如將乙個圓形與乙個矩形進行合併等. 在wpf的自定義繪製中,有三種方法可以做到,分別是(1)利用geometrygroup物件;(2)利用combinedgeometry物件;(3)使用geometry.combin()靜態方法。其中第一種方式是利用集合並可以向集合中新增任意多個元素,而後面兩種方式只能兩兩合併,但後面兩者的合併方式更靈活,可以是兩圖形的「交集」「並集」「差集」以及「異或」。
1 ,使用geometrygroup物件進行圖形合併
參考以下**,我們合併了乙個橢圓與乙個矩形:
protected
override
void
onrender(drawingcontext dc)
效果圖如下:
我們只是簡單地將兩個圖形以相加的方式合併在了一起,注意到合併後的圖形中間部分出現乙個鏤空的無色區域,是由合併後的圖形的fillrull決定的,如果我們把group.fillrule = fillrule.evenodd;更改為 group.fillrule = fillrule.nonzero;則填充效果將是如下這樣:
2, 使用combinedgeometry物件進行圖形合併
參考以下**,我們合併了乙個橢圓與乙個矩形:
protected
override
void
onrender(drawingcontext dc)
注意到geometrycombinemode列舉,它有四個列舉值,如果我們有a,b分別表示兩個圖形的話,那麼:
geometrycombinemode.exclude: 合併結果為a-b
geometrycombinemode.intersect: 合併結果為a與b的相交部分
geometrycombinemode.union: 合併結果為a+b
geometrycombinemode.xor: 合併結果為(a-b)+(b-a)
3, 使用geometry.combin()靜態方法進行圖形合併
geometry.combin()靜態方法與使用combinedgeometry物件進行圖形合併差不多
protected
override
void
onrender(drawingcontext dc)
其中geometry.combin()靜態方法中有用於圖形變換的引數(旋轉,縮放等),如果不需要變換則填寫null
在WPF中自定義你的繪製(五)
在wpf中自定義你的繪製 五 周銀輝將我們的繪製轉變為畫刷 wpf中的畫刷比gdi 中要強大得多,除了常用的實心畫刷 漸變畫刷外,還支援更多的平鋪畫刷,這包括drawingbrush imagebrush visualbrush,其中drawingbrush使得我們可以將自定義的繪製用於任何可以使用...
在WPF中自定義你的繪製(五)
在wpf中自定義你的繪製 五 周銀輝將我們的繪製轉變為畫刷 wpf中的畫刷比gdi 中要強大得多,除了常用的實心畫刷 漸變畫刷外,還支援更多的平鋪畫刷,這包括drawingbrush imagebrush visualbrush,其中drawingbrush使得我們可以將自定義的繪製用於任何可以使用...
在WPF中自定義你的繪製(一)
在wpf中自定義你的繪製 一 周銀輝在傳統的windows窗體程式設計中,如果我們需要打造一些比較個性化的控制項,那麼我們常常需要自定義控制項的繪製 重寫onpaint等 即需要經常用到graphics物件。而在wpf中,我們可以使用xaml輕鬆編寫出很有特色的介面元素,似乎與以前的以前利用grap...