canvas相關(漸變 陰影 path)

2021-05-27 16:16:17 字數 1743 閱讀 9165

1、setshader

paint物件的setshader函式,我的感覺是設定一種方式來填充圖形。

可以設定為漸變,**如下:

paint paint=new paint();  //定義乙個paint

shader mshader = new lineargradient(0,0,40,60,new int ,null,shader.tilemode.repeat);

//新建乙個線性漸變,前兩個引數是漸變開始的點座標,第三四個引數是漸變結束的點的座標。連線這2個點就拉出一條漸變線了,玩過ps的都懂。然後那個陣列是漸變的顏色。下乙個引數是漸變顏色的分布,如果為空,每個顏色就是均勻分布的。最後是模式,這裡設定的是迴圈漸變

paint.setshader(mshader);

shader可以有以下幾種:

bitmapshader         位圖平鋪

lineargradient         線性漸變

radialgradient         圓形漸變

sweepgradient       角度漸變

composeshader    組合效果(組合以上幾種)

2、setshadowlayer

設定了這個之後,再畫出來的圖形後面,會有乙個陰影

paint.setshaderlayer(15,10,10,color.gray);  //第乙個引數是陰影擴散半徑,緊接著的2個引數是陰影在x和y方向的偏移量,最後乙個引數是顏色

但是這裡有個問題,在畫bitmap的時候,如果設定了shadowlayer,畫出來的圖形並不會有陰影,而是2個bitmap疊加在一起。也就是說,他的陰影層也和他本身一樣。根據分析,因該是bitmap也被設定成了陰影層。暫時還沒找到比較好的在圖下面新增陰影的辦法。

3、path的6種效果

cornerpatheffect在路徑的轉折處是圓角,構造引數為圓角半徑

discretepatheffect不規則的鋸齒線(類似心電圖)

構造引數:

第乙個是小三角的開口寬度(心電圖每個波之間的寬度)

乙個是偏移量(心電圖高度)

dashpatheffect虛線

構造引數:

第乙個是乙個陣列,陣列長度必須》=2,陣列的值定義了寬度,比如 ,意思就是第乙個實線段長20,他後面的空白長10,然後又是乙個長5的實線段,然後是長度10的空白。

第二個引數說是偏移量,沒發現具體作用

pathdashpatheffect類似上面乙個,不過是由path圖形組成的線段(如由三角形組成的線段,正方形組成的線段)。

構造引數:

第乙個引數是乙個path,由他定義圖形。

第二個是間距

第三個和上面一樣   

第四個是變換方式,有pathdashpatheffect.style.translate,rotate,morph三種。第乙個就是直接把圖形擺出路徑,第二個會依據路徑旋轉,第三個是依據路徑自動變形

composepatheffect把兩個上面其他的方式組合起來

構造引數:

第乙個是乙個effect

第二個還是乙個effect

sumpatheffect把兩個其他方法加起來,和上面類似,差別不好描述。。。

canvas專題 陰影 漸變 填充模式

顏色,樣式和陰影 fillstyle 設定或返回用於填充繪畫顏色人,漸變或模式 strokestyle 設定或返回用於筆觸的顏色呢。漸變或模式 陰影1,shadowcolor 設定或返回用於陰影的顏色 2,shadowblur 設定或返回用於陰影的模糊級別 3,shadowoffsetx設定或返回陰...

陰影漸變效果

我們的策劃想要讓原本的假陰影做乙個漸變的效果並且想要讓邊緣模糊。原本的效果時這樣的 可以看到陰影就是乙個黑影並且邊緣有很多鋸齒。首先來分析兩個事情,乙個是鋸齒,乙個時漸變陰影。一 陰影鋸齒 陰影的鋸齒主要是因為畫素不足導致的,這個情況下如果是用shadowmap的話我們可以考慮用pcf等方法處理。市...

anroid邊框陰影 圓角陰影 漸變陰影

anroid給邊框加陰影只能對內陰影,沒有給邊框對外加陰影,在自定義shape中增加一層或多層,並錯開,即可 顯示陰影效果。給邊框加陰影可使用 1.圓角陰影效果 內陰影 不加漸變色,第一層漸變色其實沒啥用,是對整個邊框漸變,2dp的陰影還是乙個顏色。android centerx 0.5 andro...