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="100" angle="0" pointerIndex="100" format="##0" color="White" fontSize="11" orthogonalOffset="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)
把这段代码和前面的模板内容进行比较,你可以发现写仪表代码不是难事,就和记流水账差不多。