在WPF中自定義你的繪製(三)

2021-09-07 03:31:06 字數 1708 閱讀 1439

原文:

在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...