私はモバイルデバイス用のフォトショップのようなプログラムを書いています。私はレイヤーの使用をサポートしたいと思います。ほとんどの場合、私は一度に約7ビットマップをメモリに格納することができます。私は、多くのメモリを使わずにたくさんのレイヤー(例えば、10または20)をサポートする方法を考え出すことができるかどうかを確認しようとしています。イメージエディタで多数のレイヤをサポートしていますか?
私の現在の考えは次のとおりです。ユーザーは、現在のペイントして操作することができ、活性層として
- 使用1つのビットマップ。
- アクティブレイヤの下にあるすべてのレイヤのフラット化バージョンを格納する1つのビットマップを使用します。
- アクティブレイヤの上にあるすべてのレイヤのフラット化されたバージョンを格納する1つのビットマップを使用します。
レイヤーがアクティブレイヤーでない場合は、ディスクに書き込んでメモリから削除できます。ユーザーがアクティブなレイヤーを切り替えると、ディスクからレイヤーを取得し、フラット化されたイメージを再作成します。
このアイデアは、各レイヤーに不透明度設定がある場合にのみ表示されますが、レイヤーが画面や掛け算などの異なるブレンドモードを持つことができるとは思われません。平坦化されたボトムレイヤーは正常に動作しますが、いずれかのレイヤーがブレンドモードを使用し、アクティブレイヤーが変更された場合、すべてのトップレイヤーを再度レンダーする必要があるようです。
どのようなアプローチを使用できますか?私は、100以上のレイヤーをサポートする様々なペイントプログラムを見てきました。そこで、いくつかのトリックが必要です。
ありがとう、それは考慮すべき興味深い考えです! – rbcc