android 抗锯齿效果(Paint方式、Canvas方式)
2013-11-14 14:09
525 查看
在画图的时候,图片如果旋转或缩放之后,总是会出现那些华丽的锯齿。其实Android自带了解决方式。
方法一:给Paint加上抗锯齿标志。然后将Paint对象作为参数传给canvas的绘制方法。
Java代码
![](http://www.javaeye.com/images/icon_star.png)
paint.setAntiAlias(true);
方法二:给Canvas加上抗锯齿标志。
有些地方不能用paint的,就直接给canvas加抗锯齿,更方便。
Java代码
![](http://www.javaeye.com/images/icon_star.png)
canvas.setDrawFilter(new PaintFlagsDrawFilter(0, Paint.ANTI_ALIAS_FLAG|Paint.FILTER_BITMAP_FLAG));
测试代码如下:
Java代码
![](http://www.javaeye.com/images/icon_star.png)
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);
}
}
下图是效果:
![](http://dl.javaeye.com/upload/picture/pic/74764/ffbc2f26-aa4c-389a-9c99-02f4f561b13c.png)
可以看出,两种方式都挺有效的。
方法一:给Paint加上抗锯齿标志。然后将Paint对象作为参数传给canvas的绘制方法。
Java代码
![](http://www.javaeye.com/images/icon_star.png)
paint.setAntiAlias(true);
方法二:给Canvas加上抗锯齿标志。
有些地方不能用paint的,就直接给canvas加抗锯齿,更方便。
Java代码
![](http://www.javaeye.com/images/icon_star.png)
canvas.setDrawFilter(new PaintFlagsDrawFilter(0, Paint.ANTI_ALIAS_FLAG|Paint.FILTER_BITMAP_FLAG));
测试代码如下:
Java代码
![](http://www.javaeye.com/images/icon_star.png)
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);
}
}
下图是效果:
![](http://dl.javaeye.com/upload/picture/pic/74764/ffbc2f26-aa4c-389a-9c99-02f4f561b13c.png)
可以看出,两种方式都挺有效的。
相关文章推荐
- Android画图之抗锯齿 paint 和 Canvas 两种方式
- Android画图之抗锯齿 paint 和 Canvas 两种方式
- Android画图之抗锯齿 paint 和 Canvas 两种方式
- Android canvas PaintFlagsDrawFilter 抗锯齿
- Android Paint和Canvas常用方法和效果
- android paint的抗锯齿效果
- Android画图之抗锯齿paint和Canvas两种方式实例
- [转]通过创建一个位图的XY Chart来学习Android绘图类Rect,Paint,Bitmap,Canvas(附源码)
- android画布canvas刷屏的两种方式
- 【Android界面实现】使用Canvas对象实现“刮刮乐”效果
- Android应用界面无标题栏和全屏效果的两种实现方式
- android绘图Paint.setXfermode()和Canvas.saveLayer()方法的作用
- Android Shaper: Paint.Xfermode和Path,实现图片圆角效果
- android 使用canvas画字符时换行(用TextPaint实现,Paint不易实现)
- Android中Drawable Bitmap Canvas Paint之间区别
- Android canvas.drawBitmap实现透明效果
- Android API学习之画布Canvas、颜料Paint
- android界面无标题栏和全屏效果的实现方式
- android canvas paint 的属性, 及画图形
- Android隐喻(三) 图形绘制: Canvas、SurfaceView、Paint、Surface、SurfaceHolder、Bitmap