日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

理解Silverlight的路径填充规则

發(fā)布時(shí)間:2025/3/15 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 理解Silverlight的路径填充规则 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

這個(gè)可以擴(kuò)展到矢量圖中路徑的填充規(guī)則,因?yàn)樗惺噶繄D都采用這個(gè)規(guī)則來填充封閉路徑的內(nèi)部,在這里只以Silverlight為例。

在網(wǎng)上找了很久關(guān)于填充規(guī)則的介紹,經(jīng)過了幾天的閱讀和自己理解還有親自嘗試,現(xiàn)在終于能說出過所以然來了,立馬分享給大家。

?

矢量路徑的填充規(guī)則有兩種方式,EvenOdd 和 NonZero,下面是我自己總結(jié)的中文解釋(挺拗口的)。

?

EvenOdd 方式是指從路徑內(nèi)部到外部經(jīng)過了與路徑有偶數(shù)個(gè)交叉點(diǎn)的那些點(diǎn)被認(rèn)為在路徑之外,有奇數(shù)個(gè)交叉點(diǎn)的那些點(diǎn)被認(rèn)為在路徑之內(nèi)并且會被填充

?

NonZero 方式是指從路徑內(nèi)部到外部經(jīng)過的那些路徑中從左到右和從右到左的數(shù)量不相同(差不為0)的那些點(diǎn)會被填充。

?

事實(shí)上并沒有那么復(fù)雜,來看一個(gè)實(shí)際的例子吧:

?

1<Path?Fill="Yellow"
2??Stroke="Blue"?StrokeThickness="3"
3??Data="F1?M?420,200?L?750,200?L?460,300?L?650,100?L?550,350?L?450,150?L?700,350?L?550,150?Z"
4/>

?

?運(yùn)行之后的圖形如下,頂點(diǎn)作了標(biāo)記:

?

?

注意上圖是NonZero填充。圖中A點(diǎn)向外部可以看出經(jīng)過了2個(gè)從左到右(3->4, 5->6,這里方向是從1到9。你也可以從9到1算方向)的路徑,但沒經(jīng)過從右到左的路徑,所以這兩個(gè)值的差不為0,所以A點(diǎn)應(yīng)該被填充。

?

下面是默認(rèn)的EvenOdd填充效果:

?

?

A點(diǎn)向外經(jīng)過了2個(gè)與路徑的交叉點(diǎn),所以被認(rèn)為在路徑之外,所以就不填充。你也可以向反方向畫線,但仍然是偶數(shù)個(gè)交叉點(diǎn)。

?

PS,Path的Data里的命令是區(qū)分大小寫的,帶坐標(biāo)的命令如果是大寫,則用絕對坐標(biāo),小寫則用相對坐標(biāo),要注意噢!


轉(zhuǎn)載于:https://www.cnblogs.com/shinyzhu/archive/2008/07/27/1254194.html

總結(jié)

以上是生活随笔為你收集整理的理解Silverlight的路径填充规则的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。