65.9K
CodeProject 正在变化。 阅读更多。
Home

可自定义的跟踪控件

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.64/5 (14投票s)

2010年6月6日

CPOL

3分钟阅读

viewsIcon

31124

downloadIcon

1049

用于可视化性能计数器的 Windows Forms 控件

tracker_demo.jpg

引言

不久前,我偶然发现了一篇Andelko Pavelic撰写的文章。我查看了代码,发现它是一种有趣的方法。但我需要更稳定、更准确、更灵活的东西——而且我还需要更好的外观。所以我借鉴了基本思想,编写了自己的版本,即TrackerControl 2.0。尽管Andelko最初的代码几乎没有留下任何东西,但最初的想法功劳仍然属于他。

Using the Code

原始控件中添加了许多附加功能和属性。

首先,绘制图形的颜色扩展为可选地使用线性颜色渐变。

tracker1.jpg

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

tracker2.jpg

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

tracker3.jpg

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

tracker4.jpg

平均值条的颜色也可以设置为线性渐变,不同于图形的线性渐变。

有些功能很难用静态图片显示,例如

GridMovement.MoveWithGraph 和 GridMovement.Fixed

网格可以随着图形逐步移动,也可以固定在背景中。

GraphSizeMode.Fixed

这是Windows任务管理器中已知的经典模式。

GraphSizeMode.Zoom

虽然仍然符合最小值和最大值之间的值,并根据这些固定边界对图形着色,但垂直缩放级别会不断调整到最高显示值。这在恒定控件高度的低值期间提供了更高的粒度。水平网格线之间的距离也会根据缩放级别进行调整(如果显示)。

GraphSizeMode.AutoAdjustMaximum

有时确切的最大值是未知的,在运行时手动调整代码中的控件最大值将很费力。此设置正是这样做的,将控件的内部最大值连续校正为最高显示值。与GraphSizeMode.Zoom不同,图形的色彩渐变得到充分利用。AutoAdjustMaximum中的最大值充当初始内部最大值,也充当其自动调整的内部下限。

TrackerRefreshInDesignMode、TrackerRefreshInRuntimeMode 和 TrackerRefreshStartOnFirstValue

这些设置的功能与名称完全一致:第一个设置最终可以避免在设计窗体时观察移动网格线造成的头痛,第二个设置有助于在运行时停止和恢复TrackerControl。第三个设置可防止控件刷新,直到它获得要绘制的第一个值。

StartValue

根据应用程序的领域,图形的起始值有时需要不为0。

ResetValueBuffer

刷新内部值缓冲区并清除图形。

关注点

组合这些设置有助于自定义可视化效果。它们也可以在运行时更改,从而产生有趣的视觉效果。

请记住,没有实现错误处理。最终,您需要根据应用程序的异常处理策略自己执行此操作。

历史

  • 2010年6月6日:初始发布
© . All rights reserved.