您的位置:首页 > 移动开发 > Android开发

android 抗锯齿效果(Paint方式、Canvas方式)

2013-11-14 14:09 525 查看
在画图的时候,图片如果旋转或缩放之后,总是会出现那些华丽的锯齿。其实Android自带了解决方式。

    方法一:给Paint加上抗锯齿标志。然后将Paint对象作为参数传给canvas的绘制方法。

Java代码  



paint.setAntiAlias(true);  

 

    方法二:给Canvas加上抗锯齿标志。

有些地方不能用paint的,就直接给canvas加抗锯齿,更方便。

Java代码  



canvas.setDrawFilter(new PaintFlagsDrawFilter(0, Paint.ANTI_ALIAS_FLAG|Paint.FILTER_BITMAP_FLAG));  

 

      测试代码如下:

Java代码  



import android.content.Context;  

import android.graphics.Bitmap;  

import android.graphics.BitmapFactory;  

import android.graphics.Canvas;  

import android.graphics.Matrix;  

import android.graphics.Paint;  

import android.graphics.PaintFlagsDrawFilter;  

import android.view.View;  

  

public class MyView extends View {  

    private PaintFlagsDrawFilter pfd;  

    private Paint mPaint = new Paint();  

    private Matrix matrix = new Matrix();;  

    private Bitmap bmp;  

  

    public MyView(Context context) {  

        super(context);  

        initialize();  

    }  

  

    private void initialize() {  

        pfd = new PaintFlagsDrawFilter(0, Paint.ANTI_ALIAS_FLAG|Paint.FILTER_BITMAP_FLAG);        

        mPaint.setAntiAlias(true);  

        matrix.setRotate(30);  

        matrix.postScale(0.5f, 0.5f);  

        bmp = BitmapFactory.decodeResource(getResources(), R.drawable.show);  

    }  

      

    @Override  

    public void dispatchDraw(Canvas canvas) {  

        canvas.translate(100, 0);  

        canvas.drawBitmap(bmp, matrix, null);  

        canvas.translate(0, 250);  

        canvas.drawBitmap(bmp, matrix, mPaint);  

        canvas.setDrawFilter(pfd);  

        canvas.translate(0, 250);  

        canvas.drawBitmap(bmp, matrix, null);  

    }  

}  

 

    下图是效果:



 

      可以看出,两种方式都挺有效的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: