【解決方法】フォームが最小化される前のパネルの状態を保存し、最大化時に復元する方法


描画アプリケーションがあります。 アプリケーションは .NET コア フレームワークに基づいており、線分、円、四角形、多角形などのいくつかの形状を描画するパネルがフォーム上にあります。 フォームを最小化すると、非常に奇妙な動作に気付きました。もう一度最大化すると、すべての描画が消えます。 パネルの状態を変数に保存し、ウィンドウが再び最大化されたときにパネルの状態を復元するにはどうすればよいですか?

私が試したこと:

以下のコード スニペットは、フォーム サイズが変更されたときにリッスンし、パネルの状態を保存して最大化時に復元する必要があります。これを行う方法が問題です。

解決策 1

永続的なサーフェス (ビットマップなど) に描画したり、描画したアクションを保存したりしない限り、パネル上のそのような描画はすべて一時的なものです。次にパネルのすべての部分に対して Paint イベントがトリガーされると、それらの描画は失われます。 .
これには、最小化、最大化、サイズ変更、またはパネルが別のコントロールまたは他のウィンドウによって部分的または完全に覆われていることが含まれます。

編集可能な永続オブジェクトの場合、「(x1, Y1) から (X2, Y2) への線の描画」などをコレクションに格納し、Paint イベントを処理してそのコレクションを反復処理し、そこから描画する必要があります。 ユーザーが新しい命令を追加したら、それをコレクションに追加し、Panel で Invalidate を呼び出します。これにより、Paint イベントがトリガーされます。

コメント

タイトルとURLをコピーしました