指针与颜色值范围


我们在绑定到指针这节中,用两个Range实现了下图的效果:

有了上一节介绍的ValueColor,我们用一个Range就能实现了,因为ValueColor有个PointerIndex属性,我们可以 不设置Value属性,直接通过PointerIndex属性取指针值。

我们看看实现过程,首先删除原来的两个Range,然后:

1、增加一个Range

2、给Range增加两个ValueColor,二者的属性设置 如下,注意第一个Range的Value属性为0 ,第二个Range没有设置Value属性,而是将PointerIndex属性设置为100,也就是取主指针的值:

  

这里将Opacity(透明度)设置为50%,除了美观的需要,还是因为Marks和Range重叠在一起,不合理设置透明度的话,Range可能会完全覆盖掉Marks。

上述设置的意思是:从0到指针值,Range的颜色为绿色,从指针值到120,Range的颜色为红色。

也可以用下面的代码来完成同样的设置,测试代码前,请先删除原来的Range:

Dim rg As RadialGauge = e.Form.Controls("Guages1").RadialGauge
Dim
rng As New GaugeRange()
rng.Location = 85
rng.ValueColorFalloff = C1.Win.C1Gauge.C1GaugeValueColorFalloff.None
rng.Width = 10
rng.Border.LineStyle = C1.Win.C1Gauge.C1GaugeBorderStyle.None
rng.ValueColors.Add(
New GaugeValueColor(0, color.SpringGreen, 0.5))  '三个参数的构造函数
rng.ValueColors.Add(
New GaugeValueColor(Double.NaN, 100, color.OrangeRed, 0.5)) '四个参数构的造函数
rg.Decorators.Add(rng)

重要提示:这里用到了GaugeValueColor的四参数构造函数,这四个参数分别为:起始值、指针编号,颜色和透明度,如果要绑定到指针,请将起始值设置为Double.NaN


关于成员顺序与覆盖

前面提到成员覆盖问题,并通过设置透明度来避免可能的覆盖,这里说的是可能,是因为我们还可以通过调整成员顺序来避免覆盖,系统在绘制仪表时,是按先后顺序绘制的,所以集合中越靠后的成员,越会显示在前面:

提示:调整先后顺序,并不会即时刷新仪表,通常要单击"确定"按钮后才会生效。


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