zoukankan      html  css  js  c++  java
  • 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. }  
     

        下图是效果:

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

  • 相关阅读:
    CompletableFuture java 8新增加异步处理
    Java并发编程:CountDownLatch、CyclicBarrier和 Semaphore , Condition
    怎么让一个不定宽高的div垂直水平居中?
    数组对象方法排序
    Webpack ERROR in Path must be a string. Received undefined
    es6 babel转码器安装配置及常见命令
    使用淘宝镜像cnpm安装Vue.js
    JS中的call()和apply()方法
    placeholder颜色更改
    typeof与js数据类型
  • 原文地址:https://www.cnblogs.com/duanweishi/p/4449500.html
Copyright © 2011-2022 走看看