2

私のプログラムでは、ピクセルアートを描画しようとしていますが、アンチエイリアシングを発生させたくありません。BitmapsDrawableBitmapsのアンチエイリアシングを無効にする方法を見つけましたが、 Drawablesでは無効にしません。Drawableのアンチエイリアシングを無効にすることはできませんか?

私は以下を試しました:

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ではアンチエイリアシングを削除するという奇妙な効果がありますが、GalaxyNexusでは削除されません。

スクリーンショット

任意の洞察をいただければ幸いです。

4

1 に答える 1

5

およびCanvasを使用して、全体のアンチエイリアシングを無効にすることができます。PaintFlagsDrawFilterCanvas.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 に答える