可自定义的跟踪控件
用于可视化性能计数器的 Windows Forms 控件

引言
不久前,我偶然发现了一篇Andelko Pavelic撰写的文章。我查看了代码,发现它是一种有趣的方法。但我需要更稳定、更准确、更灵活的东西——而且我还需要更好的外观。所以我借鉴了基本思想,编写了自己的版本,即TrackerControl
2.0。尽管Andelko最初的代码几乎没有留下任何东西,但最初的想法功劳仍然属于他。
Using the Code
原始控件中添加了许多附加功能和属性。
首先,绘制图形的颜色扩展为可选地使用线性颜色渐变。

为了使其更立体,可以对图形下方的区域着色。

可以调整网格的网格大小,并可以选择性地隐藏水平和/或垂直网格线。

控件越宽,图形表示的值就越多。我发现在某些情况下,将平均值可视化为水平条很有帮助。

平均值条的颜色也可以设置为线性渐变,不同于图形的线性渐变。
有些功能很难用静态图片显示,例如
GridMovement.MoveWithGraph 和 GridMovement.Fixed
网格可以随着图形逐步移动,也可以固定在背景中。
GraphSizeMode.Fixed
这是Windows任务管理器中已知的经典模式。
GraphSizeMode.Zoom
虽然仍然符合最小值和最大值之间的值,并根据这些固定边界对图形着色,但垂直缩放级别会不断调整到最高显示值。这在恒定控件高度的低值期间提供了更高的粒度。水平网格线之间的距离也会根据缩放级别进行调整(如果显示)。
GraphSizeMode.AutoAdjustMaximum
有时确切的最大值是未知的,在运行时手动调整代码中的控件最大值将很费力。此设置正是这样做的,将控件的内部最大值连续校正为最高显示值。与GraphSizeMode.Zoom
不同,图形的色彩渐变得到充分利用。AutoAdjustMaximum
中的最大值充当初始内部最大值,也充当其自动调整的内部下限。
TrackerRefreshInDesignMode、TrackerRefreshInRuntimeMode 和 TrackerRefreshStartOnFirstValue
这些设置的功能与名称完全一致:第一个设置最终可以避免在设计窗体时观察移动网格线造成的头痛,第二个设置有助于在运行时停止和恢复TrackerControl
。第三个设置可防止控件刷新,直到它获得要绘制的第一个值。
StartValue
根据应用程序的领域,图形的起始值有时需要不为0。
ResetValueBuffer
刷新内部值缓冲区并清除图形。
关注点
组合这些设置有助于自定义可视化效果。它们也可以在运行时更改,从而产生有趣的视觉效果。
请记住,没有实现错误处理。最终,您需要根据应用程序的异常处理策略自己执行此操作。
历史
- 2010年6月6日:初始发布