1

必要に応じて背景ビットマップがあり、フォントを使用して別のビットマップを背景ビットマップに描画しています。互いの上に描画され、必要なレベルにズームインすると、アーティファクトなしで完全に表示され、まさに希望どおりに表示されます。しかし、私の目的のために、フォントのビットマップを背景のビットマップにマージして、基本的に 1 つのアイテムにする必要があります。私は明らかに実行時にそれを行う必要があり、私が使用している解決策はこれです....

canvas2 = new Canvas(backgroundBitmap);
canvas2.drawBitmap(fontBitmap.getBitmap(), null, rects.get(backgroundRectIndex), null);
invalidate();

必要なレベルにズームインすると、フォントにアーティファクトが発生します。私はグラフィックスにかなり慣れていないため、同様の問題に関するいくつかの記事と質問を読みました。ペイントでディザリングを試し、null の代わりに canvas2.drawBitmap で使用してみましたが、何も役に立たないようです。私はこれに出くわしました...

これは、アプリケーションがメモリ内ビットマップを内部的に作成し、後で画面に表示するために何かを描画する場合には当てはまりません。プラットフォームは、描画時にそのようなビットマップをオンザフライで自動スケーリングします。このような場合のその他の副作用として、オフスクリーン ビットマップが最終的にディスプレイにレンダリングされるときに、そのようなビットマップで描画されたフォントがビットマップ レベルでスケーリングされ、結果としてスケーリング アーティファクトが発生することがあります。

リンクテキスト

それは私の問題かもしれませんが、どうすれば解決できますか? どんな助けでも大歓迎です。

4

1 に答える 1

1

ビットマップをスケーリングする場合は、必ずfilterBitmapフラグをオフに設定してください。

ペイントでは次のようになります。

paint.setFilterBitmap(false);
于 2011-01-23T04:12:47.783 に答える