0

宿題があり、C#を使用してWinFormsゲームを作成する必要があります。私は次のコンポーネントを持っています:

  • カスタムペイントイベントを含むパネルサブクラス
  • デフォルトのウィンドウUI要素を備えたパネル。

私は彼らにこのようにアレンジしてもらいたい:

ここに画像の説明を入力してください

中央のパネルに手動で描画するので、それを設定して固定したいWidthのでHeightFormそれを含むサブクラスはパネル全体を表示します。

パネルサブクラスで手動でサイズを設定してみました。

Width = someFixedWidth;
Height = someFixedHeight;

次に、それを含むものに追加しますForm

GamePanel panel = new GamePanel(...);
panel.Dock = DockStyle.Center;
this.AutoSize = true;
this.AutoSizeMode = AutoSizeMode.GrowAndShrink;
this.Controlls.Add(panel);

これを使って、フォームはパネルのサイズを尊重すると思いましたが、ウィンドウが非常に小さくなり、タイトルだけが表示されるようになりました。

だから私の質問は、GamePanelのサイズを手動で設定し、それをフォームの中央にドッキングして、フォームが設​​定したサイズを尊重し、サイズを小さくしたり大きくしたりしないようにするにはどうすればよいかということです。 ?

4

2 に答える 2

1

Dockプロパティは、コンテナ(フォーム)のサイズ変更中のコンポーネントの動作を定義するために使用されます。画面を一元化するのではなく、画面の変更に応じてサイズを変更します。理想的には、メソッドを使用してコントロールを再配置し、サイズ。これを参照してください:

SuspendLayout();

Width = someFixedWidth;
Height = someFixedHeight;

panel.Size = new Size(panelWidth, panelHeight);

panel.Location = new Point( ClientSize.Width / 2 - panelWidth / 2, ClientSize.Height / 2 - panelHeight / 2);
panel.Anchor = AnchorStyles.None;
panel.Dock = DockStyle.None;

ResumeLayout();
于 2012-09-20T13:48:29.303 に答える
0

私の場合、パネルの最小の高さ/幅を編集しましたが、機能しました。

デザインに関連するコードを編集しようとしましたが、自動生成されたコードを書き直すことはお勧めしませんでした。

ありがとうございました。

于 2017-10-24T00:01:16.507 に答える