zoukankan      html  css  js  c++  java
  • 消除图片中的锯齿

    两种情况会出现锯齿:

    1.当我们用Canvas绘制位图的时候,如果对位图进行了选择,则位图会出现锯齿。

    2.在用View的RotateAnimation做动画时候,如果View当中包含有大量的图形,也会出现锯齿。

    解决方法:

    1.首先在你的构造函数中,需要创建一个Paint。 Paint mPaint = new Paint(); 然后,您需要设置两个参数: 1)mPaint.setAntiAlias(); 2)mPaint.setBitmapFilter(true)。第一个函数是用来防止边缘的锯齿,第二个函数是用来对位图进行滤波处理。最后,在画图的时候,调用drawBitmap函数,只需要将整个Paint传入即可。

    //消除锯齿
    BitmapDrawable bd = new BitmapDrawable(bitmapWithReflection);
    bd.setAntiAlias(true);

    ImageView imageView = new ImageView(mContext);
    imageView.setImageDrawable(bd);

    2.1)在您的构造函数中,创建一个Paint滤波器。 PaintFlagsDrawFilter mSetfil = new PaintFlagsDrawFilter(0, Paint.FILTER_BITMAP_FLAG);第一个参数是你要清除的标志位,第二个参数是你要设置的标志位。此处设置为对位图进行滤波。 2)当你在画图的时候,如果是View则在onDraw当中,如果是ViewGroup则在dispatchDraw中调用如下函数。 canvas.setDrawFilter( mSetfil ); 最后,另外,在Drawable类及其子类中,也有函数setFilterBitmap可以用来对Bitmap进行滤波处理,这样,当你选择Drawable时,会有抗锯齿的效果。

  • 相关阅读:
    编写 iPhone Friendly 的 Web 应用程序
    WebService的安全性讨论【身份识别】
    使用InstallShield系统变量的缺省值
    数据库用户操作相关
    TFS2010安装
    微软实验虚拟机下载地址
    生成18位不重复的ID
    Linux 账户 帐户管理 文件权限 权限管理
    Chrome 插件开发
    Ubuntu 环境变量 设置
  • 原文地址:https://www.cnblogs.com/6yuets2/p/2359034.html
Copyright © 2011-2022 走看看