在畫圖的時候,圖片如果旋轉或縮放之後,總是會出現那些華麗的鋸齒。其實Android自帶瞭解決方式。
方法一:給Paint加上抗鋸齒標誌。然後將Paint物件作為參數傳給canvas的繪製方法。
 
Java代碼
1.paint.setAntiAlias(true);
 
方法二:給Canvas加上抗鋸齒標誌。
有些地方不能用paint的,就直接給canvas加抗鋸齒,更方便。
 
Java代碼
1.canvas.setDrawFilter(new PaintFlagsDrawFilter(0, Paint.ANTI_ALIAS_FLAG|Paint.FILTER_BITMAP_FLAG));
 
測試代碼如下:
 
Java代碼
1.import android.content.Context;
2.import android.graphics.Bitmap;
3.import android.graphics.BitmapFactory;
4.import android.graphics.Canvas;
5.import android.graphics.Matrix;
6.import android.graphics.Paint;
7.import android.graphics.PaintFlagsDrawFilter;
8.import android.view.View;
9.
10.public class MyView extends View {
11. private PaintFlagsDrawFilter pfd;
12. private Paint mPaint = new Paint();
13. private Matrix matrix = new Matrix();;
14. private Bitmap bmp;
15.
16. public MyView(Context context) {
17. super(context);
18. initialize();
19. }
20.
21. private void initialize() {
22. pfd = new PaintFlagsDrawFilter(0, Paint.ANTI_ALIAS_FLAG|Paint.FILTER_BITMAP_FLAG);
23. mPaint.setAntiAlias(true);
24. matrix.setRotate(30);
25. matrix.postScale(0.5f, 0.5f);
26. bmp = BitmapFactory.decodeResource(getResources(), R.drawable.show);
27. }
28.
29. @Override
30. public void dispatchDraw(Canvas canvas) {
31. canvas.translate(100, 0);
32. canvas.drawBitmap(bmp, matrix, null);
33. canvas.translate(0, 250);
34. canvas.drawBitmap(bmp, matrix, mPaint);
35. canvas.setDrawFilter(pfd);
36. canvas.translate(0, 250);
37. canvas.drawBitmap(bmp, matrix, null);
38. }
39.}
 
arrow
arrow
    全站熱搜

    戮克 發表在 痞客邦 留言(0) 人氣()