本文实例分析了Android编程画图之抗锯齿解决方法。分享给大家供大家参考,具体如下:
在画图的时候,图片如果旋转或缩放之后,总是会出现那些华丽的锯齿。其实Android自带了解决方式。
方法一:给Paint加上抗锯齿标志。然后将Paint对象作为html" target="_blank">参数传给canvas的绘制方法。
paint.setAntiAlias(true);
方法二:给Canvas加上抗锯齿标志。
有些地方不能用paint的,就直接给canvas加抗锯齿,更方便。
canvas.setDrawFilter(new PaintFlagsDrawFilter(0, Paint.ANTI_ALIAS_FLAG|Paint.FILTER_BITMAP_FLAG));
测试代码如下:
import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Matrix; import android.graphics.Paint; import android.graphics.PaintFlagsDrawFilter; import android.view.View; public class MyView extends View { private PaintFlagsDrawFilter pfd; private Paint mPaint = new Paint(); private Matrix matrix = new Matrix();; private Bitmap bmp; public MyView(Context context) { super(context); initialize(); } private void initialize() { pfd = new PaintFlagsDrawFilter(0, Paint.ANTI_ALIAS_FLAG|Paint.FILTER_BITMAP_FLAG); mPaint.setAntiAlias(true); matrix.setRotate(30); matrix.postScale(0.5f, 0.5f); bmp = BitmapFactory.decodeResource(getResources(), R.drawable.show); } @Override public void dispatchDraw(Canvas canvas) { canvas.translate(100, 0); canvas.drawBitmap(bmp, matrix, null); canvas.translate(0, 250); canvas.drawBitmap(bmp, matrix, mPaint); canvas.setDrawFilter(pfd); canvas.translate(0, 250); canvas.drawBitmap(bmp, matrix, null); } }
下图是效果:
可以看出,两种方式都挺有效的。
希望本文所述对大家Android程序设计有所帮助。
在学习渲染的旅途中,你可能会时不时遇到模型边缘有锯齿的情况。这些锯齿边缘(Jagged Edges)的产生和光栅器将顶点数据转化为片段的方式有关。在下面的例子中,你可以看到,我们只是绘制了一个简单的立方体,你就能注意到它存在锯齿边缘了: 可能不是非常明显,但如果你离近仔细观察立方体的边缘,你就应该能够看到锯齿状的图案。如果放大的话,你会看到下面的图案: 这很明显不是我们想要在最终程序中所实现的效果
问题内容: 对于PIL中的线条和椭圆,图像是粗糙的。 我发现仅在调整大小和缩略图中使用了抗锯齿功能。 绘制直线或椭圆形时,有什么方法可以进行抗锯齿吗? 问题答案: 本地执行此操作的唯一方法是使用超级采样。以所需大小的倍数渲染图像,然后使用进行渲染。
目前我正在使用JavaFX开发一个2D游戏,游戏是像素艺术。不幸的是,像素艺术是模糊的,这是由抗锯齿引起的。 有没有办法在JavaFX画布上禁用抗锯齿?我试过用SceneAntialiasing。残废了,没用。我找不到其他方法来关闭它。
我继承了一个模拟程序来扩展新功能。原文是使用AWT图形库编写的小程序。在添加新功能之前,我想使程序适应桌面并使用JavaFX而不是AWT。 模拟每秒绘制数百或数千个对象数十次,然后擦除它们并在新位置重新绘制它们,从而有效地对它们进行动画处理。我正在为UI的该部分使用Canvas对象。擦除是通过用背景色重新绘制对象来完成的。然而,我所看到的是擦除对象是不完整的。不过,一种“光环”被抛在了脑后。 下面
我在我的项目中使用了InkCanvas,我注意到每当我画东西时,笔划都非常尖锐,一旦我松开鼠标按钮,它就会变得模糊。 有没有什么方法可以使笔划与绘制时的样子保持一致? 现在,我正在检查从图像中获得的阵列,并删除任何与颜色不完全匹配的像素。红色(即ARGB:255255,0,0)。。。我相信有一种更聪明的方法可以做到这一点! 提前谢谢。
我环顾四周,在谷歌上搜索后,找不到这个问题的确切答案。我有一小段代码,它将点绘制到代表图像的浮点数组。我在其他地方的另一篇帖子中看到了吴小林的反走样(http://freespace.virgin.net/hugo.elias/graphics/x_wupixl.htm)这一切都是有道理的,我已经让它工作了,但是它没有解释如何处理两个粒子(或Wu像素)重叠或共享相同像素的情况。。。 我曾尝试创建另