0

ちょっとした話: Visual Studio で C# を使用してレベル エディターを作成し、長い間編集されていなかったマップをインポートしています。これらのタイルマップには複数のレイヤーがあり、複数のタイルで構成されています。それらはすべて互いの上に表示されます。最後に、タイルを選択するための選択ボックスが必要です。

現在のアプローチ:タイル マップの各レイヤーのフォーム内に「パネル」オブジェクトを作成します。すべてのレイヤーを対応するパネルにロードしたら、すべてのパネルを互いにスタックし、すべてのレイヤーを次のレイヤーに「親」にします。Selectionbox パネルも最後に親を取得します。(なぜですか?これをしないと、一番上のレイヤーが背景をフォームに設定します。これは灰色です。2番目のレイヤーは表示されません)。したがって、次のようになります... SelectionBoxPanel -> Panel_3 -> Panel_2 -> Panel_1 -> BackgroundPanel.

問題: selectionBoxPanel のペイント イベントを呼び出すとき (シーン上を移動するとき)、すべての親パネルが再描画されます。明らかに、大量の CPU を消費し、レイヤー上のすべてのタイルが更新されます!

質問:別のファイル (シェーダー ファイルなど)、またはオブジェクト (パネルなど) など、これらのレイヤーのグラフィカルな表現に使用できるものはありますか?

4

1 に答える 1

0

問題を修正しました。

  1. すべてのパネルをピクチャーボックスに変更しました。(スクロール機能はなくなりましたが、現在対応中です)。

  2. Pictureboxes にはペアレント化オプションが含まれていないため、代わりに Parenting から "Controls.Add(Child)" メソッドに移動しました。

  3. すべてのピクチャボックスにダブルバッファリングを適用。

終わり。

于 2013-04-24T11:13:12.637 に答える