android 消除鋸齒方法[轉]

來源:互聯網
上載者:User

標籤:android   style   color   使用   io   strong   sp   on   new   

在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 = new PaintFlagsDrawFilter(0, Paint.FILTER_BITMAP_FLAG);第一個參數是你要清除的標誌位,第二個參數是你要設定的標誌位。此處設定為對位元影像進行濾波。

2)當你在畫圖的時候,如果是View則在onDraw當中,如果是ViewGroup則在dispatchDraw中調用如下函數。 canvas.setDrawFilter( mSetfil ); ★ 最後,另外,在Drawable類及其子類中,也有函數setFilterBitmap可以用來對Bitmap進行濾波處理,這樣,當你選擇 Drawable時,會有消除鋸齒的效果。

android 消除鋸齒方法[轉]

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.