0

次の問題があります。ネイティブ GDI+ を使用して Windows フォームのパネル サーフェスに描画しています (描画アルゴリズムはネイティブ DLL 内にあり、P/Invoke によって呼び出されます)。すべて問題ありませんが、パネルのサイズが変更されるまでは. 縮小されている場合は、適切にレンダリングされています。ただし、拡大すると、元のサイズに対応するパネルの領域の部分のみが GDI+ によって再描画されます。

なぜそうなのですか?Panel のサイズが変更されるたびに、本当に新しい Graphics オブジェクトを作成する必要がありますか?

4

2 に答える 2

2

Hans Passant のコメントによる回答:

You found out why, the Graphics object no longer matches the state of the window. You are assuming that it is expensive to create. It isn't, it only costs couple of dozen microseconds. It is only expensive to keep it around, needlessly using memory. Anyhoo, you need to recreate it when the window state changes.

于 2013-01-08T21:19:42.453 に答える
0

パネルのペイントイベントで描画を行っていると仮定して... そうでない場合はお知らせください。

サイズ変更時にパネルで .Invalidate を呼び出してみてください。

于 2011-10-23T14:53:16.583 に答える