背景
我正在 c#.net 中构建一个 Windows 应用程序(winforms)。主窗体需要显示一个仪表板控件,它基本上是一个资源调度程序。时间在底部运行。在 y 轴上运行的项目。
我过去曾为这类事情使用过ComponentGo 资源调度程序,但这次我需要更多的定制。所以我想建立自己的。
- 我需要能够在表单上绘制矩形。大小基于开始和结束时间。
- 我需要能够完全为矩形着色,并且还需要半填充。矩形需要在上方和下方添加标签/文本。
- 我需要能够在矩形上捕获鼠标事件。鼠标移动、双击等
- 当显示的“时间”发生变化时,我需要能够重绘矩形 - 即向前移动,向后移动(底部的按钮)。
这是所需布局的模型:
问题
- 我基于 a 创建了我的控件
Panel
,这是个好主意吗? - 如何在面板边界之外绘制文本?我可以直接绘制到 Parent Canvas,但感觉不对。
- 我怎样才能让我的面板用颜色填满一半?
- 如何确保我的重绘流畅快速。
目前我基本上有:
public class MyControl : Panel
{
public MyControl()
{
CalcXPosition();
this.SetBounds(this.Left, this.Top, myWidth, myHeight);
}
//... code omitted
}
但我不确定我是否会以最好的方式解决这个问题......任何帮助或评论将不胜感激。
另外,我需要每个矩形块都有与之关联的属性。Block_ID、Block_Name 等