指定装饰范围
Labels和Marks,都有四个用于指定范围的属性,分别是:From 、To、 ScaleFrom和ScaleTo。
From和To决定了Marks(或Labels)的可见范围,也就是这个范围内的刻度才是可见的,如果不设置,二者的值分别等于Gauge的Minimum和Maximum
。
ScaleFrom和ScaleTo决定了Marks(或Labels)的起始值和终止值,也就是第一个刻度和最后一个刻度的值,如果没有设置,则分别等于From和To,如果From和To也没有设置,则分别等于Minimum和Maximum。
最常用的是From和ScaleFrom。
假定有个仪表,其值的范围为4到84,也就是 Minimum等于3,Maximum 等于84.
我们给这个仪表增了一个Marks(Interval为10)作为主刻度,再增加一个Marks(Interval为2)作为副刻度,然后增加一个Labels(Interval为10)作为值标签。
如果不做特别的设置,这个仪表应该是这样的:
如果希望主刻度和标签值都是10的整数倍,也就是主刻度和标签的第一个值应该是10而不是4,那么怎么实现呢?
我们已经知道,ScaleFrom决定列第一个刻度的值,如果ScaleFrom没有设置,则第一个刻度的值就是From,所以要解决上述问题很简单,只需将主刻度和标签的ScaleFrom(和或From)设置为10即可:
那么From和ScaleFrom的差别在哪里,以上面的例子来说,如果你用From来解决,那么From只能设置为10,如果你用ScaleFrom解决,那么ScaleFrom可以为任何10的整数倍数字(但不能大于10)都可以,例如0、-10、-20等.
以ScaleFrom等于0为例,那么第一个标签(或刻度)是0,由于0在可见范围之外,所以这个标签(或刻度)不可见,而第二个标签(或刻度)的值是10,在可见范围内,所以成了第一个可见的标签。
实际上,我们很少要设置一个4到84的数值范围,然后却要求刻度(或标签)为10的整数倍,这不是自寻烦恼吗?
但有的时候,即使常规设置也会遇到问题,不得不使用From和ScaleFrom来解决,例如某个仪表的属性为:
Minimum: | 0 |
Maximum: | 12 |
StartAngle: | 0 |
SweepAngle: | 360 |
对于这种角度范围为360度的径向仪表,起点标签(0)和终点标签(12)会重叠在一起:
要解决这个问题,需要将Labels的起始值从0改为1,方法很简单,将Lables的From或ScaleFrom属性设置为1即可: