各种绑定技巧
下面这个仪表来自仪表库,不过仪表库中的有些小问题,本本节改进了一下,完整的模板会在本节最后面提供。
这个仪表实现了很多动态效果,但并不需要写一行代码:
上图的仪表有三个指针,下面的两个三角形(蓝色和红色)是在MorePointers增加的两个指针,名别命名为min和max。
你也许会认为上面的白色三角形是主指针,其实不是的,这是一个SingleMark,因为这个三角形需要随值变换填充颜色,而Pointer没有ValueColors,是没有办法动态 变换颜色的(除非写代码)。
那么主指针隐藏了吗? 也没有,白色三角形上面这条黑色线条其实就是主指针。
整个值范围分成三个部分,通过一个Range用不同的颜色区分,min区域(蓝色)从0到min指针值,max区域从max指针值到100(红色),由于指针值会变动,所以这三个值范围不是固定的。
当主指针的值处于min区或max区的时候,还会自动显示警示文字:
这个仪表看起来很复杂,其实设计起来倒是轻松得很。
由于仪表轮廓、Marks和Labels已经讲过多次此,这里不再重复了,只介绍其他组件的设计:
1、在MorePointers集合中增加两个指针,Name属性分别设置为min和max,Value属性分别设置为40和60,Shape属性改为Triangle,Width属性为默认的9,Length属性改为15, FlipShape属性改为True(翻转指针形状),Offset属性为改为70(向下移动70),min的填充颜色改为CornflowerBlue,max的填充颜色改为IndianRed,得到:
2、增加一个Range,Location属性改为24,ValueColorFalloff属性改为"None",ValueColors增加三个项目,分别为:
得到:
3、增加一个SingleMark,Location属性改为33,Length属性改为15,Width属性改为9,Shape属性改为Triangle,PointerIndex属性改为100(绑定到主指针),ValueColorFalloff属性改为"None"。
然后参照第2步,在ValueColors增加3个项目,只是中间这个项目的颜色不是LimeGreen,改为White,也就是说当主指针的值处于min和max之间是,SingleMark的填充颜色为白色,得到:
4、回到Gauge属性设置窗口,将Pointer的Visible属性改回True,Location属性改为33,Alignment改为In,Length属性改为15,Width改为0.01,Shape改为Rectangle,得到:
5、增加三个SingleLabel,PointerIndex属性属性分别设置为100,0和1,Position属性分别设为0.5、0.09和0.91, Location属性设为7,Color改为White,FontSize改为7,ImmediateUpdate改为True
6、将上述三个SingleLabel的Format属性分别改为: "Value = "##0、"Min = "##0和"Max = "##0,双引号中的内容会鸳鸯输出,##0才是真正的Format,也就是取整,得到:
7、最后增加两个SingleLabel,Text属性分别设置为"Value is below
Minimum"和"Value is above Maximum",Location属性设置为95,Position属性设置为0.5,PointerIndex都设为100(都绑定到主指针),ValueColorFalloff属性设为False,FontSize设置为7。
如何实现两个SingleLabel的自动显示和隐藏呢?
其实很简单,通过ValueColors,在某个值范围内将Opacity(透明度)设置为0,这样文字就隐藏了,以第一个SingleLabel为例(Value is
below Minimum)为例,在ValueColors集合中增加两个项目,分别为:
第二个SingleLabel(Value is above Maximum)则是相反的,从0到max指针值,Opacity为0%(隐藏文本),从max指针值开始正常显示文本:
至此这个仪表设计完毕, 你可以下载模板文件参考。