• Android画图之抗锯齿 paint 和 Canvas 两种方式


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

        下图是效果:

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

  • 相关阅读:
    禁止页面全选复制IE,Opera,Mozilla Firefox,Google Chrome,Safari,Flock等主流浏览器测试成功
    Create virtual keyboard using C# Winform Application
    C# 获取Windows语言类型(两种方式)
    Javascript在ASP.NET中的用法:计算还剩余输入多少个字符
    IE和firefox通用的复制到剪贴板的JS函数,Opera测试不成功!
    什么是数据的表分区(文章附上Server 2005分区实施方案)
    JavaScript创建的可编辑表格
    关于ASP.NET页面打印技术的总结
    错误:该行已经属于另一个表
    安装IE7后测试IE6环境的解决办法_IE6Standalone
  • 原文地址:https://www.cnblogs.com/duanweishi/p/4449500.html
Copyright © 2020-2023  润新知