1

私は Android 用の描画プログラムを作成しています。サポートしたい機能の 1 つは、色を調整し、描画でリアルタイムに色が変化するのを確認する機能です。

図面を表現するために、プログラムは、限られたカラー パレット配列を参照するインデックスの 2D int 配列 (「カラー インデックス配列」) を内部的に格納します。描画の一部が調整されると、実際に画面に描画されるビットマップ (「画面ビットマップ」) と共にカラー インデックス配列が調整されます。

このメソッドを使用すると、色が調整されるときに、カラー インデックス配列全体をループして、ビットマップ全体を再レンダリングする必要があります。配列全体をループする必要はありません。

私が試したことの 1 つは、パレットの色ごとに個別のALPHA_8ビットマップを保持することです。各ビットマップには、ピクセルがその色で設定されている場合は 0xff が含まれ、設定されていない場合は 0x00 が含まれます。色が変更されると、新しい色のペイントを使用して、画面のビットマップの上に変化する色の ALPHA_8 ビットマップを描画します。

このソリューションは機能し、単純なループ ソリューションよりも効率的ですが、私が抱えている問題は、setPixelが ALPHA_8 ビットマップで機能しないことです。静かに失敗します。代わりに、ALPHA_8 ビットマップごと に個別のByteBufferを維持し、 copyPixelsFromBufferを使用して実際のビットマップを更新する必要があります。O(1) 操作が O(n) 操作に変わり、ALPHA_8 ビットマップに必要なストレージが 2 倍になるため、これは望ましくありません。

明確な解決策が見えていないように感じます。見逃したものはありますか?

4

0 に答える 0