-
1 # 使用者5376173803818
-
2 # 使用者5376173803818
1)mPaint.setAntiAlias();
2)mPaint.setFilterBitmap(true)。
=====================================
在Android中,目前,我知道有兩種出現鋸齒的情況。
① 當我們用Canvas繪製點陣圖的時候,如果對點陣圖進行了選擇,則點陣圖會出現鋸齒。
② 在用View的RotateAnimation做動畫時候,如果View當中包含有大量的圖形,也會出現鋸齒。我們分別以這兩種情況加以考慮。
◆ 用Canvas繪製位的的情況。在用Canvas繪製點陣圖時,一般地,我們使用drawBitmap函式家族,在這些函式中,都有一個Paint引數,要做到防止鋸齒,我們就要使用到這個引數。
如下:
首先在你的建構函式中,需要建立一個Paint。 Paint mPaint = new Paint();
然後,您需要設定兩個引數:
1)mPaint.setAntiAlias();
2)mPaint.setFilterBitmap(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 );
回覆列表
1)mPaint.setAntiAlias();
2)mPaint.setFilterBitmap(true)。
=====================================
在Android中,目前,我知道有兩種出現鋸齒的情況。
① 當我們用Canvas繪製點陣圖的時候,如果對點陣圖進行了選擇,則點陣圖會出現鋸齒。
② 在用View的RotateAnimation做動畫時候,如果View當中包含有大量的圖形,也會出現鋸齒。我們分別以這兩種情況加以考慮。
◆ 用Canvas繪製位的的情況。在用Canvas繪製點陣圖時,一般地,我們使用drawBitmap函式家族,在這些函式中,都有一個Paint引數,要做到防止鋸齒,我們就要使用到這個引數。
如下:
首先在你的建構函式中,需要建立一個Paint。 Paint mPaint = new Paint();
然後,您需要設定兩個引數:
1)mPaint.setAntiAlias();
2)mPaint.setFilterBitmap(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 );