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画图之抗锯齿

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

android 绘图时抗锯齿方法两种

其一:paint.setAntiAlias(ture);paint.setBitmapFilter(true)
  • donggeAndroid
  • donggeAndroid
  • 2014年09月02日 16:31
  • 933

iOS开发Debug之图片抗锯齿

1.用图片的时候,对图片旋转等操作可能会使图片边上出现锯齿 2.在图片上用drawRect画线的时候,会出现锯齿。 解决办法: 1.在info.plist中打开抗锯齿,但是会对影响整个应用的渲染...
  • q1194259339
  • q1194259339
  • 2016年10月12日 09:42
  • 702

GDI+抗锯齿画图

SetSmoothingMode方法可使用参数如下: SmoothingModeInvalid  SmoothingModeDefault SmoothingModeHighSpeed Smoothi...
  • jiaoyangwuze
  • jiaoyangwuze
  • 2013年09月19日 13:12
  • 2272

gdi+的画图抗锯齿原理

gdi+的画图抗锯齿原理最近解决以前的一个问题时需要画一个没有锯齿的椭圆区域来,以前的版本画的椭圆被客户投诉锯齿太明显,我一看锯齿确实明显,如果放在大平板这种dpi比较低的屏幕上那就更明显了。 听说...
  • bjrxyz
  • bjrxyz
  • 2017年02月04日 18:44
  • 809

android paint的抗锯齿效果

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

android 画图 抗锯齿 代码

//在有使用Paint的情况下 paint.setAntiAlias(true); //在不使用Paint的情况下 canvas.setDrawFilter(new PaintFlagsDrawF...
  • csy172775922
  • csy172775922
  • 2011年08月02日 14:57
  • 731

Android 绘图中的抗锯齿处理

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

android画图抗锯齿

在画图的时候,图片如果旋转或缩放之后,总是会出现锯齿。    方法1:给Paint加上抗锯齿标志。然后将Paint对象作为参数传给canvas的绘制方法。 paint.setAntiAlias(tru...
  • yang_hui1986527
  • yang_hui1986527
  • 2011年07月10日 11:08
  • 1067

Android 画图抗锯齿

Android 中提供了两种方法: 第一种:使用Paint进行设置,然后传递给Canvas进行绘制。 paint.setAntiAlias(true) 第二种:直接设置Canvas的Dr...
  • wangbole
  • wangbole
  • 2014年07月15日 10:46
  • 754
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android画图之抗锯齿
举报原因:
原因补充:

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