Android 绘图中的抗锯齿处理
16lz
2021-01-23
今天在读程序源码的过程中到一段这样的代码:
canvas.setDrawFilter(new PaintFlagsDrawFilter(0, Paint.ANTI_ALIAS_FLAG|Paint.FILTER_BITMAP_FLAG));
不太明白,Google了一下,原来是进行:抗锯齿处理的。同时,学习了一下Android绘图中的两种抗锯齿处理方式。
首先要搞明白锯齿是什么?如下图所示,左边为未经过抗锯齿处理的图形,右面为经过抗锯齿处理的图形,明显可以看到,经过抗锯齿处理的图形会显得更加圆滑一些。
在Android绘图中同样会出现这个问题,可是为什么会出现锯齿呢?
①当我们用Canvas绘制位图的时候,如果对位图进行了选择,则位图会出现锯齿。
② 在用View的RotateAnimation做动画时候,如果View当中包含有大量的图形,也会出现锯齿。
那么如何来解决呢?只要把握住一点,能通过Paint设置的就用Paint设置,如果不能用Paint设置的就直接给Canvas加上抗锯齿。
解决方案一,通过Paint来设置:
首先在你的构造函数中,需要创建一个Paint。 Paint mPaint = new Paint(); 然后,您需要设置两个参数: 1) mPaint.setAntiAlias();
解决方案二:通过Canvas设置
canvas.setDrawFilter(new PaintFlagsDrawFilter(0, Paint.ANTI_ALIAS_FLAG|Paint.FILTER_BITMAP_FLAG));
总之,解决锯齿的问题:
1、通过Paint设置
2、通过Canvas设置
更多相关文章
- Android图形架构分析总结
- Android图形显示之本地窗口
- android 的图形引擎 skia
- Android图形绘制
- [转] 移植Android图形引擎Skia到MIPS平台经验总结(一)
- 第三部分:Android 应用程序接口指南---第四节:动画和图形---第五章
- Android图形子系统
- 你应该知道的五个免费的Android最佳图形设计应用
- 【译】Android位图颜色模式的问题