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. }  

     

        下图是效果:

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

  • 相关阅读:
    通过注册表读取设置字体
    StretchBlt
    PatBlt
    如何用MaskBlt实现两个位图的合并,从而实现背景透明
    输出旋转字体
    用字体开透明窟窿
    输出空心字体
    光滑字体
    画贝塞尔曲线
    一些点运算函数
  • 原文地址:https://www.cnblogs.com/xiaochao1234/p/4039436.html
Copyright © 2011-2022 走看看