w3c標準圖示:
evenodd

fillrule-evenodd.png
nonzero;

fillrule-nonzero.png
要判斷一個點是否在圖形內,需要從該點作任意方向的一條射線,然后檢測射線與圖形路徑的交點值,假設為x,x初始值為0。
對于evenodd,每相交一次,x+1,最后的結果如果x為奇數則該點在圖形內,如果為偶數則在圖形外。
對于nonzero,情況則復雜一些,每相交一次,x的值也會變化,不過這個變化和你的射線同路徑相交的方向有關。要知道路徑本身是一個向量(也就是有方向的線段),你畫的射線也有方向,則射線同路徑相交的方向一定會有兩種方向,從路徑左側相交和右側相交。你可以任意假設一個方向為正,那么另一個相交方向為負,比如我假設左相交為正,那么右相交則為負。此時,計算x的方法是,正相交+1,負相交-1,看最后x的值,如果為0,則該點在圖形外,如果不為0則在圖形內。
最后,不要去鉆相切的牛角尖,因為射線是任意的,如果有相切,那么換個方向再畫。
這是用我自己的方式理解的fill-rule屬性。