zoukankan      html  css  js  c++  java
  • Android画图之抗锯齿

     在画图的时候,图片如果旋转或缩放之后,总是会出现那些华丽的锯齿。其实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. }  

     

        下图是效果:

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

  • 相关阅读:
    Apache 配置多站点访问「为项目分配二级域名」
    php封装的mysqli类完整实例
    PHP实现链式操作的三种方法详解
    php实现简单链式操作mysql数据库类
    PHP PDO_MYSQL 链式操作 非链式操作类
    23个数据库常用查询语句
    微信小程序表单弹窗实例
    ES6 && ECMAScript2015 新特性
    ES6新语法概览
    sql将两个日期之间的日子全列出来
  • 原文地址:https://www.cnblogs.com/xiaochao1234/p/4039436.html
Copyright © 2011-2022 走看看