`
crazier9527
  • 浏览: 1013443 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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(1000);  
  32.         canvas.drawBitmap(bmp, matrix, null);  
  33.         canvas.translate(0250);  
  34.         canvas.drawBitmap(bmp, matrix, mPaint);  
  35.         canvas.setDrawFilter(pfd);  
  36.         canvas.translate(0250);  
  37.         canvas.drawBitmap(bmp, matrix, null);  
  38.     }  
  39. }  
 

    下图是效果:

 

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

分享到:
评论

相关推荐

    Android编程画图之抗锯齿解决方法

    为了解决这个问题,Android提供了两种主要的抗锯齿方法,分别针对`Paint`对象和`Canvas`对象。 方法一:给`Paint`加上抗锯齿标志 当我们在画布上绘制图形或文字时,可以通过设置`Paint`对象的属性来开启抗锯齿功能...

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

    方法一:给Paint加上抗锯齿标志。然后将Paint对象作为参数传给canvas的绘制方法。 paint.setAntiAlias(true); 方法二:给Canvas加上抗锯齿标志。 有些地方不能用paint的,就直接给canvas加抗锯齿,更方便。 ...

    android 画图集合.zip

    通过设置Paint的属性,可以改变绘制的颜色、透明度、抗锯齿效果等,从而实现丰富的视觉效果。 3. **Path对象** Path用于构建复杂的路径,可以组合直线、曲线和弧线。在Canvas上,你可以用drawPath()方法结合Path...

    android画图总结

    例如,可以设置颜色模式(ColorMode),选择不同的刷子样式(StrokeCap, StrokeJoin),调整抗锯齿效果,甚至添加阴影。同时,Paint还支持文字测量和绘制,以及自定义画笔效果。 总的来说,Android画图涉及到的内容...

    Android 画图工具源码.zip

    在画图过程中,我们可以设置不同的Paint对象来改变线条宽度、颜色、抗锯齿效果等,以达到丰富的绘图效果。 3. **MotionEvent**: 在Android中,用户的触摸事件由MotionEvent对象表示。开发者需要监听onTouchEvent()...

    画图去除锯齿类

    在Android的Canvas绘图中,当绘制线条或形状时,如果开启了抗锯齿,系统会自动对图形边缘进行颜色混合,使得边缘与背景之间的过渡更加自然,避免出现明显的像素级硬边缘。 2. **`setFilterBitmap()` 方法**: `...

    android画图总结.pdf

    - `setAntiAlias(boolean antiAlias)`: 设置抗锯齿。 **使用示例** ```java Paint paint = new Paint(); paint.setColor(Color.RED); paint.setStyle(Paint.Style.STROKE); paint.setStrokeWidth(5); canvas....

    android 画图小例子

    - 可以通过`Paint`设置填充色、描边色、抗锯齿、文字大小、字体等。 - 使用`canvas.save()`和`canvas.restore()`来保存和恢复绘图状态,便于进行复杂的图形变换。 3. **坐标系统与变换** - Android的坐标系统...

    android画图板

    `Paint`对象还包含许多其他属性,如画笔样式、抗锯齿效果等,都可以根据需求进行调整。 4. **橡皮擦功能**: 橡皮擦功能通常通过设置`Paint`的`Xfermode`为`PorterDuff.Mode.CLEAR`来实现。这会让画笔清除覆盖的...

    Android画图学习总结(五)——Paint_玉树临疯_ 京华志

    Paint对象还可以指定抗锯齿、混合模式、阴影效果等高级特性,使得开发者能够创造出丰富多彩的应用界面。 ### 二、Paint的主要功能与属性 #### 1. 设置颜色与透明度 - **setColor(int color)**:设置绘制的颜色。 -...

    Android 画图工具源码.zip源码资源下载

    在Android平台上,开发一款画图工具是一个常见的需求,这通常涉及到图形用户界面...通过实际操作源码,你可以更直观地了解Android绘图的流程,这对于开发自己的Android画图应用或者其他图形密集型应用是非常有价值的。

    Android 画图工具源码.rar

    通过`Canvas`,我们可以调用`drawPath()`、`drawRect()`等方法来绘制各种形状,并使用`Color`类设置线条的颜色,`Paint`类可以配置线条宽度、样式、抗锯齿效果等。`Path`类则用于构建复杂的绘图路径。 源码可能还...

    Android下使用Canvas画图

    - `setPaint()`: 使用Paint对象设置更复杂的绘图属性,如颜色、样式、抗锯齿、文本大小等。 - `save()`: 保存Canvas的状态,以便稍后恢复。 - `restore()`: 恢复之前保存的Canvas状态。 5. **坐标系统与变换** ...

    Android画图学习笔记

    - `setAntiAlias(boolean aa)`: 设置抗锯齿。 - **主要功能**: - 文本绘制: 如`canvas.drawText(String text, float x, float y, Paint paint)`。 - 形状绘制: 如`canvas.drawCircle(float cx, float cy, float ...

    Android画图

    - `Paint`对象则负责设置线条颜色、宽度、样式、抗锯齿等属性,它与Canvas配合,定义了绘制的视觉效果。 2. **触摸事件处理** - Android通过`MotionEvent`来处理触摸事件。开发者需要在Activity或View中重写`...

    画图工具Android 的

    - `Paint`对象还可以用于设置抗锯齿效果,提高图形边缘的平滑度。 3. **绘制折线**: - 折线图的每个点由一对坐标(x, y)表示。首先,你需要一个二维数组或列表来存储这些点。 - 使用Canvas的`drawLine()`方法来...

    Android 画图程序源码.zip项目安卓应用源码下载

    - 设置线条宽度、样式(如虚线、实线)、抗锯齿等特性。 通过分析这个项目的源码,学习者不仅可以掌握 Android 应用的基本架构,还能深入了解图形绘制的原理和技巧,这对于提升 Android 图形界面设计能力大有裨益...

    Android画图Path的使用

    - `setAntiAlias()`:开启或关闭抗锯齿功能,提高图形边缘的平滑度。 - `setDither()`:启用或禁用图像抖动处理,改善颜色渲染效果。 - `setFilterBitmap()`:控制是否在动画中滤掉Bitmap的优化,以提高显示速度...

Global site tag (gtag.js) - Google Analytics