非常に幅の広い横棒を含む棒グラフを想像してください。これらのバーを表示し、スクロールしてズームしたいフォームにパネルがあります。フォーム、つまりパネルはサイズ変更できます。バーはデータベースから動的に作成されます。ユーザーがズームインまたはズームアウトするたびに、すべてのバーを新たに作成して、パネル上のサイズを調整する必要があります。
Label コントロールを使用してこれらのバーを作成しましたが、問題は他のすべてのコントロールにも当てはまります。ズームインすると、最終的にバーがコントロール サイズの魔法の 16 ビット境界 (>65536 ピクセル) を超えてしまいます。これにより、開始時にパネル上にすべてのコントロールを単純に作成し、パネルにスクロールを処理させることができなくなります。
私の考え: スクロール バーの現在の位置とズーム レベルに従って、すべてのバー コントロールの Panel をクリアし、現在のビュー ウィンドウに表示されているものだけを作成します。可視ビューから遠く離れたバーは、パネルのすぐ外側で短くカットされるため、最大サイズはパネル サイズによって制限されます。
私の質問:
- このクリア/作成プロセスはどのパネル イベントで行うのが最適ですか? 何千ものコントロールが存在する可能性があるため、できるだけ少なくする必要があります。
- これを処理するより良い方法はありますか?たぶん、最初からすべて間違っていたのでしょう。
この問題は、巨大なコントロールだけでなく、パネル上で小さなコントロールが非常に離れている (>65536 ピクセル) 場合にも発生するため、多くのプロジェクトで適切な解決策が役立つと思います。