2

バックグラウンド

c#.net で Windows アプリケーション (winforms) を構築しています。メイン フォームには、基本的にリソース スケジューラであるダッシュボード コントロールを表示する必要があります。底を横切る時間。y 軸上を走るアイテム。

過去にこの種の目的でComponentGo Resource Schedulerを使用したことがありますが、今回はさらにカスタマイズが必要です。だから私は自分自身を構築しようとしています。

  • フォームに長方形を描画できる必要があります。サイズは開始時間と終了時間に基づいています。
  • 四角形を完全に色付けし、半分塗りつぶす必要があります。長方形には、上下にラベル/テキストが必要です。
  • 四角形でマウスイベントをキャプチャできる必要があります。マウス移動、ダブルクリックなど
  • 表示される「時間」が変化したときに長方形を再描画できるようにする必要があります-つまり、前方に移動、後方に移動します(下部のボタン)。

目的のレイアウトのモックアップを次に示します。

希望のフォームレイアウト

質問

  1. に基づいてコントロールを作成しましたPanelが、良い考えですか?
  2. パネル境界の外側にテキストを描画するにはどうすればよいですか? 親キャンバスに直接描画できますが、それは間違っていると感じます。
  3. パネルの半分を色で塗りつぶすにはどうすればよいですか?
  4. 再描画がスムーズで高速であることを確認するにはどうすればよいですか?

現在、私は基本的に持っています:

public class MyControl : Panel
{
     public MyControl()
     {
          CalcXPosition();
          this.SetBounds(this.Left, this.Top, myWidth, myHeight);
     }

     //... code omitted
}

しかし、これについて最善の方法で行っているかどうかはわかりません....どんな助けやコメントも大歓迎です。

また、各長方形ブロックにプロパティを関連付ける必要があります。Block_ID、Block_Name など

4

1 に答える 1

1

1) パネルに基づいてコントロールを作成しましたが、良い考えですか?

Panel を使用することも、単に Control を使用することもできます。もう 1 つのオプションは、クラスごとにコントロールを使用せず、代わりに親キャンバスに長方形を直接描画することです。どちらの方法にも長所と短所があります。四角形の描画方法を細かく制御する必要がない場合は、四角形を手動で描画するよりも、コントロールを使用する方がおそらく簡単です。

2) パネル境界の外側にテキストを描画するにはどうすればよいですか? 親キャンバスに直接描画できますが、それは間違っていると感じます。

オプション 1: テキストをコントロール内に収まるように、長方形のコントロールを少し大きくします。各四角形コントロールの背景を透明 (または親キャンバスと同じ灰色) にし、色付きの四角形をコントロールの中央に描画します。

オプション 2: テキストを別々の Label コントロールにして、四角形コントロールの上に配置します。

3) パネルの半分を色で塗りつぶすにはどうすればよいですか?

コントロールの OnPaint イベントを使用して、コントロール上の任意の場所に色を描画します。

4) 再描画がスムーズで高速であることを確認するにはどうすればよいですか?

それは多くの要因に依存します。何かを起動して実行し、遅すぎる場合は、より具体的な詳細を別の質問に投稿してください。

于 2013-07-30T13:27:17.103 に答える