0

現在、WinForms と GDI+ を使用して単純なペイントのようなプログラムに取り組んでおり、単純な問題に取り組みました。

パネルをキャンバスとして使用しています。すべてのドローアブル オブジェクト (図形、線など) をリストに保持しています。GDI+ が何かを再描画するたびに、そのリストを繰り返し処理し、各オブジェクトで Draw() を呼び出します。この方法は私にとってはうまくいきました。高速で、見栄えがよく、Undo() 操作が必要なときはいつでも、再描画時にリストの最後の要素を無視するだけです。

問題は、Flood Fill 機能を追加したいということです。その問題にどのようにアプローチすればよいですか?まず第一に、私が見つけたほとんどの FloodFill 実装はビットマップで動作します。私はビットマップを持っていません。すべてのオブジェクトはメモリに保持されています。そのビットマップにそれらを描画する必要がありますか? そのような場合は、どうでしょうか。元に戻す/やり直し操作を管理する方法がわかりません。再描画で何をすべきかわかりません。

ここで間違った方法を考えているのではないかと思うので、私は本当に助けを頼りにしています。

4

1 に答える 1