Android画图之抗锯齿

转载 2011年12月02日 12:08:14

在画图的时候,图片如果旋转或缩放之后,总是会出现那些华丽的锯齿。其实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(1000);  
  32.         canvas.drawBitmap(bmp, matrix, null);  
  33.         canvas.translate(0250);  
  34.         canvas.drawBitmap(bmp, matrix, mPaint);  
  35.         canvas.setDrawFilter(pfd);  
  36.         canvas.translate(0250);  
  37.         canvas.drawBitmap(bmp, matrix, null);  
  38.     }  
  39. }  
 

    下图是效果:

 

      可以看出,两种方式都挺有效的。

Android抗锯齿设置

转载: http://blog.csdn.net/xn4545945/article/details/8577590 抗锯齿在游戏中很重要。玩过大型游戏的同学肯定知道都有抗锯齿...
  • goodtalent
  • goodtalent
  • 2015-01-28 10:38:09
  • 6971

android消除锯齿原理分析

前言 在Android中view绘画是很重要的一点,当view重写、surfaceView重写,都会涉及到如何把一个视图画的完美、边角不在毛躁躁,下面会从原来、业务场景、防锯齿、防锯齿实现原理。  一...
  • Apple_hsp
  • Apple_hsp
  • 2016-03-09 15:28:36
  • 2920

android paint的抗锯齿效果

前几天在做公司需求的时候用到自定义textview的功能。主要是判断textview在显示完文字之后还有没有足够的空间用来显示一些图片和其他的文字,这里其他的文字是使用cavans.drawtext函...
  • andyhxc
  • andyhxc
  • 2015-07-13 19:46:31
  • 4928

Android 抗锯齿的两种方式

出现锯齿条件:倾斜或旋转、快速变化。 当在屏幕上画一条直线时, 横竖不会出现锯齿, 但是当斜着画时, 就会出现锯齿的效果。方式一:通过画笔配置:paint.setAntiAlias(true); ...
  • sinat_31057219
  • sinat_31057219
  • 2017-11-10 10:40:22
  • 240

关于自定义View时,画图形和图片时抗锯齿的使用的问题

一般画一条横着的线或者竖线没有锯齿的效果,但是如果是一条斜着的线用canvas画时,就会出现锯齿效果,可能影响视觉,感觉不好看,这是由于像素点的问题造成的!画图形时也是如此,只有在旋转,移动,放大时才...
  • loongggdroid
  • loongggdroid
  • 2012-06-04 10:25:55
  • 3514

android中抗锯齿的设置

抗锯齿在游戏中很重要。玩过大型游戏的同学肯定知道都有抗锯齿的设置。Android中也需要。 出现锯齿条件:倾斜或旋转、快速变化。 当在屏幕上画一条直线时, 横竖不会出现锯齿, 但是当斜着画时, 就...
  • jonemill
  • jonemill
  • 2014-12-12 10:17:16
  • 699

android画图抗锯齿的几个方法

在画图的时候,图片如果旋转或缩放之后,总是会出现那些华丽的锯齿。其实Android自带了解决方式。 方法一:给Paint加上抗锯齿标志。然后将Paint对象作为参数传给canvas的绘制方...
  • qingfengzaishou
  • qingfengzaishou
  • 2015-09-23 10:10:31
  • 1021

Android 绘图中的抗锯齿处理

今天在读程序源码的过程中到一段这样的代码:canvas.setDrawFilter(new PaintFlagsDrawFilter(0, Paint.ANTI_ALIAS_FLAG|Paint.FI...
  • watermusicyes
  • watermusicyes
  • 2015-05-28 19:21:28
  • 3525

android TextView 文本抗锯齿UI效果

一.2d绘图 除了这两种抗锯齿    1. paint.setAntiAlias(true); 2. canvas.setDrawFilter(new PaintFlagsDrawFilter(...
  • cw2004100021124
  • cw2004100021124
  • 2013-10-09 11:09:44
  • 3827

android 如何消除锯齿

在Android中,目前,我知道有两种出现锯齿的情况。  ① 当我们用Canvas绘制位图的时候,如果对位图进行了选择,则位图会出现锯齿。  ② 在用View的RotateAnimation做动画...
  • zjzjt
  • zjzjt
  • 2016-01-18 09:45:36
  • 1352
收藏助手
不良信息举报
您举报文章:Android画图之抗锯齿
举报原因:
原因补充:

(最多只允许输入30个字)