バックグラウンド
c#.net で Windows アプリケーション (winforms) を構築しています。メイン フォームには、基本的にリソース スケジューラであるダッシュボード コントロールを表示する必要があります。底を横切る時間。y 軸上を走るアイテム。
過去にこの種の目的でComponentGo Resource Schedulerを使用したことがありますが、今回はさらにカスタマイズが必要です。だから私は自分自身を構築しようとしています。
- フォームに長方形を描画できる必要があります。サイズは開始時間と終了時間に基づいています。
- 四角形を完全に色付けし、半分塗りつぶす必要があります。長方形には、上下にラベル/テキストが必要です。
- 四角形でマウスイベントをキャプチャできる必要があります。マウス移動、ダブルクリックなど
- 表示される「時間」が変化したときに長方形を再描画できるようにする必要があります-つまり、前方に移動、後方に移動します(下部のボタン)。
目的のレイアウトのモックアップを次に示します。
質問
- に基づいてコントロールを作成しました
Panel
が、良い考えですか? - パネル境界の外側にテキストを描画するにはどうすればよいですか? 親キャンバスに直接描画できますが、それは間違っていると感じます。
- パネルの半分を色で塗りつぶすにはどうすればよいですか?
- 再描画がスムーズで高速であることを確認するにはどうすればよいですか?
現在、私は基本的に持っています:
public class MyControl : Panel
{
public MyControl()
{
CalcXPosition();
this.SetBounds(this.Left, this.Top, myWidth, myHeight);
}
//... code omitted
}
しかし、これについて最善の方法で行っているかどうかはわかりません....どんな助けやコメントも大歓迎です。
また、各長方形ブロックにプロパティを関連付ける必要があります。Block_ID、Block_Name など