Canvas抗鋸齒方法兩種

2021-06-29 09:05:15 字數 968 閱讀 4939

在android中,目前,我知道有兩種出現鋸齒的情況。

①當我們用canvas繪製點陣圖的時候,如果對位圖進行了選擇,則位圖會出現鋸齒。

②在用view的rotateanimation做動畫時候,如果view當中包含有大量的圖形,也會出現鋸齒。我們分別以這兩種情況加以考慮。 

◆用canvas繪製位的的情況。在用canvas繪製點陣圖時,一般地,我們使用drawbitmap函式家族,在這些函式中,都有乙個paint引數,要做到防止鋸齒,我們就要使用到這個引數。如下:首先在你的建構函式中,需要建立乙個paint。paint mpaint = new paint(); 然後,您需要設定兩個引數: 1)mpaint.setantialias();2)mpaint.setbitmapfilter(true)。第乙個函式是用來防止邊緣的鋸齒,第二個函式是用來對位圖進行濾波處理。最後,在畫圖的時候,呼叫drawbitmap函式,只需要將整個paint傳入即可。 

◆有時候,當你做rotateanimation時,你會發現,討厭的鋸齒又出現了。這個時候,由於你不能控制點陣圖的繪製,只能用其他方法來實現防止鋸齒。另外,如果你畫的點陣圖很多。不想每個點陣圖的繪製都傳入乙個paint。還有的時候,你不可能控制每個視窗的繪製的時候,您就需要用下面的方法來處理——對整個canvas進行處理。1)在您的建構函式中,建立乙個paint濾波器。 paintflagsdrawfilter msetfil = newpaintflagsdrawfilter(0,paint.filter_bitmap_flag);第乙個引數是你要清除的標誌位,第二個引數是你要設定的標誌位。此處設定為對位圖進行濾波。2)當你在畫圖的時候,如果是view則在ondraw當中,如果是viewgroup則在dispatchdraw中呼叫如下函式。canvas.setdrawfilter( msetfil ); 

★最後,另外,在drawable類及其子類中,也有函式setfilterbitmap可以用來對bitmap進行濾波處理,這樣,當你選擇drawable時,會有抗鋸齒的效果。

抗鋸齒方法兩種

在android中,目前,我知道有兩種出現鋸齒的情況。當我們用canvas繪製點陣圖的時候,如果對位圖進行了選擇,則位圖會出現鋸齒。在用view的rotateanimation做動畫時候,如果view當中包含有大量的圖形,也會出現鋸齒。我們分別以這兩種情況加以考慮。用canvas繪製位的的情況。在用...

抗鋸齒方法兩種

from 在android中,目前,我知道有兩種出現鋸齒的情況。當我們用canvas繪製點陣圖的時候,如果對位圖進行了選擇,則位圖會出現鋸齒。在用view的rotateanimation做動畫時候,如果view當中包含有大量的圖形,也會出現鋸齒。我們分別以這兩種情況加以考慮。用canvas繪製位的的...

Canvas裝載文字兩種格式

context物件可以設定以下 text 屬性 font 文字字型,同 cssfont family 屬性 textalign 文字水平對齊方式。可取屬性值 start,end,left,right,center。預設值 start.textbaseline 文字豎直對齊方式。可取屬性值 top,h...