四角パズルを解くための Windows Forms アプリケーションを作成しました。現時点では、パズル グリッドは PaintEventHandler を使用して、アプリのメイン ウィンドウの Panel に描画されます。PaintEventHandler によって呼び出されるメソッドは、呼び出されるたびにグリッド全体を再描画します。このアプローチは機能しますが、ちらつきがあり非効率的であり、よりスムーズなものに置き換えたいと考えています。
私は Qt で多くの同様のアプリケーションを作成しました。Qt では、QCanvas と QCanvasView を作成します。次に、QCanvas にオブジェクトを追加したり、QCanvas からオブジェクトを削除したり、QCanvasView でupdate()
メソッドを呼び出して、ちらつきなしで変更が有効になることを確認できます。
私が試した代替アプローチの 1 つはGraphics
、Panel の描画に使用されるオブジェクトへの参照を保持し、Paint イベントの外部で描画を試みることでした。これはうまくいきませんでした: 役に立たないArgumentException: Parameter is not valid
例外が発生しました。これは、アプリがその時点で描画を行うことを期待していなかったため、Windows によってスローされたとしか思えません。
QCanvas for Windows Forms に似たものはありますか? そうでない場合、パズル グリッドを更新するにはどのような方法を使用すればよいですか?