4

ペイントアプリで自由形式の描画を実装する方法について頭を悩ませたいと思います。コマンドオブジェクトがクリックダウン、任意のドラッグ、リリースを含むとすると、これは必然的にコマンドに格納され、ビットマップコンテキストに描画されますか?

手始めに、データは単に、mousemoveコマンドで報告されたすべてのピクセル座標が大きなリストに入れられたものでしょうか?ユーザーはおそらく最適化できる長い完全な直線を描いていないので、他の明白なアプローチは考えられません。

それの描画は、基本的に、マウスの移動で報告されたすべての座標で(ペンの幅である半径の)実線の円をスタンプし、移動が十分にジャンプした場合にその間に補間されますか?

更新:データの保存方法を尋ねたときの意味を明確にしました。私はコマンドオブジェクトのデータがどのように見えるかについて話していて、それがアクションを表すための「移動先」ピクセル座標のリストになると考えました。描画されていたビットマップイメージ内のデータの表現については言及していませんでした。

4

1 に答える 1

0

元に戻す機能が必要かどうかによると思います。そうでない場合は、コマンド リストを保存する必要はありません。MouseMove ハンドラーでビットマップを更新するだけで済みます。

元に戻すことができるようにしたい場合は、コマンドを保存することをお勧めします (この場合、描画中にマウスが移動した座標のリスト、つまりマウス ボタンが押されている間に) は、それを行う 1 つの方法です。また、設定 (ペンの半径、色など) を追跡する必要があります。

または、各コマンドが終了した後にビットマップの複数のコピーを保存することもできます (ただし、これは大きなビットマップに対して大量のメモリを使用します)。

于 2010-10-18T14:07:41.443 に答える