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

    在画图的时候,图片如果旋转或缩放之后,总是会出现那些华丽的锯齿。其实Android自带了解决方式。

        方法一:给Paint加上抗锯齿标志。然后将Paint对象作为参数传给canvas的绘制方法。

    paint.setAntiAlias(true); 

    paint.setAntiAlias(true);

        方法二:给Canvas加上抗锯齿标志。

    有些地方不能用paint的,就直接给canvas加抗锯齿,更方便。

    canvas.setDrawFilter(new PaintFlagsDrawFilter(0, Paint.ANTI_ALIAS_FLAG|Paint.FILTER_BITMAP_FLAG)); 

    canvas.setDrawFilter(new PaintFlagsDrawFilter(0, Paint.ANTI_ALIAS_FLAG|Paint.FILTER_BITMAP_FLAG));

          测试代码如下:

    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);  
        }  

    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://blog.sina.com.cn/s/blog_5fc933730100qmg8.html

  • 相关阅读:
    C# 操作ini配置文件
    2015-2016跨年感想
    HTTP 状态码总结 (HTTP Status Codes)
    简单、精准、高效的使用搜索引擎,快速的找到你想要的结果
    ASP.NET前后台交互之JSON数据
    软件开发项目做需求分析的一点心得
    我是如何自学编程的“3遍读书法”
    C#中Request.ServerVariables详细说明及代理
    C#
    JavaScript如何计算两个日期间的时间差
  • 原文地址:https://www.cnblogs.com/jiezzy/p/2599303.html
Copyright © 2011-2022 走看看