2

在我的程序中,我试图绘制像素艺术并且不希望出现抗锯齿。我找到了为BitmapsDrawableBitmaps禁用抗锯齿的方法,但不是为Drawables禁用抗锯齿的方法。是否无法禁用 Drawables 的抗锯齿功能?

我尝试了以下方法:

drawable.setDither(false);
drawable.setFilterBitmap(false);

正如 vmironov 所建议的那样,我尝试像这样删除画布上的任何过滤:

DrawFilter filter = new PaintFlagsDrawFilter(Paint.ANTI_ALIAS_FLAG | Paint.FILTER_BITMAP_FLAG | Paint.DITHER_FLAG, 0);

Canvas canvas = surfaceHolder.lockCanvas();

canvas.setDrawFilter(filter);

这在我的 Toshiba Thrive 上消除了抗锯齿效果,但在我的 Galaxy Nexus 上却没有。

截图

任何见解都值得赞赏。

4

1 回答 1

5

Canvas您可以使用PaintFlagsDrawFilter和禁用整个抗锯齿Canvas.setDrawFilter(DrawFilter filter)

final DrawFilter filter = new PaintFlagsDrawFilter(Paint.ANTI_ALIAS_FLAG, 0);
final Canvas canvas = ...;

canvas.setDrawFilter(filter);

更新:

我查看了屏幕截图,我可以肯定地说这不是抗锯齿问题。您看到的是结果,bilinear filtration不幸的是,它不能为硬件加速视图禁用。作为一种解决方法,您可以只为您的视图使用软件光栅化:

view.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
于 2013-01-17T07:48:07.547 回答