SingleMark(单刻度)

SingleMark用于在仪表中显示单个刻度。

单个刻度通常是没有意义的,所以SingleMark常用于两种场合:

1、和SingleLabel一起绑定到某个指针,作为SingleLabel的背景使用。

2、SingleMark单独绑定到某个指针,然后设置其ValueColors属性,通过颜色变化来定性值。

SingleMark的属性和SingleLabel基本一样,例如SingleMark增加到仪表中后,默认也是看不到的,直到你设置了Value、Angle或PointerIndex三个属性之一。

和SingleLabel相比,SingleMark多了和形状设置相关的属性,而关于形状的设置,我们已经在Marks的相关章节讲述了,就不再重复了。

示例一

本示例要设计一个下图所示的仪表,在仪表的右上角显示当前值,且背景颜色随值变化:


上面的方框不能用Rectangle来实现,因为这个方框的背景颜色要随当前值变化,所以只能用SingleMark,至于当前值的显示,肯定是用SingleLabel来实现的。

我门已经知道,对于SingleMark和SingleLabel,其位置由Location和Value(或绑定指针的值)属性决定,如果需要固定位置显示,则要通过Angle指定角位置。

除此之外,还有一个OrthogonalOffset属性,用于平移(垂直于半径移动)SingleMark和SingleLabel。

设计步骤:

1、首先增加一个SingleMark,属性设置如下:

[Location=100,Angle=0,Length=18,Width=30]

此时新增的SingleMark显示在仪表的顶部居中位置:

2、将OrthogonalOffset属性设置为82,也就是将SingleMark向右移动82,得到:

3、将SingleMark的PointerIndex属性设置为100,将其绑定遇到指针.

4、编辑SingleMark的ValueColors集合,为不同的值范围设置颜色,这个SingleMark的完整模板为:

<singleMark location="100" angle="0" pointerIndex="100" length="18" orthogonalOffset="82" width="30">
   <valueColors>
     <valueColor value="0" color="Green" />
     <valueColor value="50" color="Coral" />
     <valueColor value="100" color="Red" />

   </valueColors>
   <border lineStyle="None" />
</singleMark>

5、最后增加一个SingleLabel,属性设置参考模板:

<singleLabel location="100angle="0pointerIndex="100format="##0color="WhitefontSize="11orthogonalOffset="82"/>

如果要通过代码添加上述SingleMark和SingleLabel,可以参考:

Dim rg As RadialGauge = e.Form.Controls("Guages1").RadialGauge
'
增加SingleMark
Dim
smk As New SingleMark()
smk.Location = 100
smk.Angle = 0
smk.PointerIndex = 100
smk.Length = 18
smk.OrthogonalOffset = 82
smk.Width = 30
smk.ValueColors.Add(
New GaugeValueColor(0, color.Green, 1))
smk.ValueColors.Add(
New GaugeValueColor(80, color.DarkOrange, 1))
smk.ValueColors.Add(
New GaugeValueColor(100, color.red, 1))
smk.Border.LineStyle = C1.Win.C1Gauge.C1GaugeBorderStyle.None
rg.Decorators.Add(smk)

'
增加SingleLabel
Dim
slb As New SingleLabel()
slb.Location = 100
slb.Angle = 0
slb.OrthogonalOffset = 82
slb.PointerIndex = 100
slb.Format =
"N0"
slb.Color = Color.White
slb.Font =
New Font("微软雅黑", 11)
rg.Decorators.Add(slb)

把这段代码和前面的模板内容进行比较,你可以发现写仪表代码不是难事,就和记流水账差不多。


本页地址:http://www.foxtable.com/webhelp/topics/3798.htm