动态添加仪表(卡片五)

上一个帮助,我们学了怎么动态在已有的仪表里添加形状。这里学学动态添加仪表,以及仪表里的形状。

同样我们先添加好一个仪表作为样本,取对应的属性值。如图:

 属性  值  说明
 行为-》AxisLength  0.23  
 行为-》AxisStart  0.74  
 行为-》BaseFactor  0.06  
 行为-》BaseOrigin  0.46  
 行为-》Maximum  5000  最大值和最小值根据自己需要设置

1、Rectangle

 属性  值  说明
 布局-》CenterPointX  0.05  
 布局-》CenterPointY  0.3
 布局-》Height  40  
 布局-》Width  25
 布局-》RotateAngle -30
 属性变更-》Border-》Color  Transparent  
 属性变更-》Filling-》Color  72, 163, 217

2、Rectangle

复制上面的Rectangle,把布局-》RotateAngle改为90。

3、Rectangle

 属性  值  说明
 布局-》CenterPointX  0.05  
 布局-》CenterPointY  0.3
 布局-》Height  40  
 布局-》Width  25
 布局-》RotateAngle  30
 属性变更-》Border-》Color  Transparent  
 属性变更-》Filling-》Color  72, 163, 217
 属性变更-》Filling-》Color2  20, 33, 88  
 属性变更-》Filling-》BushType  Gradient  
 属性变更-》Filling-》Opacity2  80%  

4、Caption

 属性  值  说明
 布局-》CenterPointX  0.05
 布局-》CenterPointY  0.33  
 属性变更-》Color  White
 属性变更-》Text  1  
 属性变更-》Font  黑体, 10.5pt, style=Bold  

5、Caption

 属性  值  说明
 布局-》CenterPointX  0.25
 布局-》CenterPointY  0.35  
 布局-》Width  250
 属性变更-》Color  White
 属性变更-》Text  标题文字  
 属性变更-》Font  黑体, 10.5pt, style=Bold  

1、 Range

 属性  值  说明
 布局-》Location  80  
 布局-》Width  15
 属性变更-》Border-》Color  Transparent  
 属性变更-》AntiAliasing  HighQuality
 属性变更-》ValueColors   添加3个颜色,分别为:
颜色1:55, 145, 221;Value=0
颜色3:25, 233, 238;Value=2500
颜色3:255, 203, 114;Value=5000
 行为-》ToPointerIndex   100

2、 SingleLabel

 属性  值  说明
 布局-》Location  35  
 属性变更-》Color  White  
 属性变更-》Font  微软雅黑, 10.5pt, style=Bold  
 属性变更-》Format  0  
 行为-》PointerIndex   100  
 行为-》Position  0.85

设置好一个仪表后,一口气复制7份,然后微调一下定位,如图:

可以观察到,每一个仪表里面的形状是不需要重新调整的,每一个仪表的BaseOrigin只需要比上一个增加0.06即可。那么使用代码添加仪表的时候,这些仪表的设置都是一样的,只是定位控制BaseOrigin即可。然后编号、标题和数量,在遍历里根据不同行设置不同值即可。完整代码:

  1. '''设置产业倾向  
  2. Dim range As GaugeRange  
  3. Dim c1 As GaugeValueColor  
  4. Dim slabel As GaugeSingleLabel  
  5.   
  6. gg.Gauges.RemoveAt(gg.Gauges.Count - 1) '移除设计时作为参考的仪表  
  7.   
  8. drs = DataTables("产业倾向").Select("名称 is not null""数量 desc"'获取所有项目  
  9. For i As Integer = 0 To drs.Count - 1  
  10.     dr = drs(i)  
  11.     Dim s As String = dr("名称"'设置名称  
  12.     lg = New LinearGauge '新增一个线性仪表  
  13.     lg.Name = "倾向_" & i '设置仪表名称,方便动态赋值  
  14.     lg.Pointer.SweepTime = 5 '动画时间  
  15.     lg.AxisLength = 0.23 '仪表宽度占整个仪表控件的23%  
  16.     lg.AxisStart = 0.74 '仪表X轴坐标,位于仪表控件的74%  
  17.     lg.BaseFactor = 0.06 '仪表高度占整个仪表控件的6%  
  18.     lg.BaseOrigin = 0.46 + i * 0.06 '设置仪表的Y轴位置,每个仪表都上一个仪表的BaseOrigin+0.06  
  19.     lg.Maximum = 5000 '最大值  
  20.   
  21.     lg.Pointer.Visible = False '隐藏指针  
  22.     lg.Value = dr("数量"'设置初始值  
  23.   
  24.     '下面3个GaugeRectangle用于拼接为序号的背景六边形图  
  25.     grt = New GaugeRectangle '  
  26.     grt.CenterPointX = 0.05  
  27.     grt.CenterPointY = 0.3  
  28.     grt.Height = 40  
  29.     grt.RotateAngle = -30  
  30.     grt.Width = 25  
  31.     grt.Border.Color = Color.Transparent  
  32.     grt.Filling.Color = Color.FromArgb(72, 163, 217)  
  33.     lg.FaceShapes.Add(grt)  
  34.   
  35.     grt = New GaugeRectangle  
  36.     grt.CenterPointX = 0.05  
  37.     grt.CenterPointY = 0.3  
  38.     grt.Height = 40  
  39.     grt.RotateAngle = 90  
  40.     grt.Width = 25  
  41.     grt.Border.Color = Color.Transparent  
  42.     grt.Filling.Color = Color.FromArgb(72, 163, 217)  
  43.     lg.FaceShapes.Add(grt)  
  44.   
  45.     grt = New GaugeRectangle  
  46.     grt.CenterPointX = 0.05  
  47.     grt.CenterPointY = 0.3  
  48.     grt.Height = 40  
  49.     grt.RotateAngle = 30  
  50.     grt.Width = 25  
  51.     grt.Border.Color = Color.Transparent  
  52.     grt.Filling.Color = Color.FromArgb(72, 163, 217)  
  53.     grt.Filling.Color2 = Color.FromArgb(20, 33, 88)  
  54.     grt.Filling.Opacity2 = 0.8  
  55. '    grt.Filling.BrushType = C1.Win.C1Gauge.C1GaugeBrushType.Gradient  
  56.     grt.Filling.BrushType = 2  
  57.     lg.FaceShapes.Add(grt)  
  58.   
  59.     gct = New GaugeCaption '添加顺序号  
  60.     gct.CenterPointX = 0.05  
  61.     gct.CenterPointY = 0.33  
  62.     gct.Color = Color.White  
  63.     gct.Font = New Font("黑体", 10.5f, FontStyle.Bold)  
  64.     gct.Text = (i + 1)  
  65.     lg.FaceShapes.Add(gct)  
  66.   
  67.     gct = New GaugeCaption '添加标题文字  
  68.     gct.Alignment = StringAlignment.Near  
  69.     gct.CenterPointX = 0.33  
  70.     gct.CenterPointY = 0.35  
  71.     gct.Width = 250  
  72.     gct.Color = Color.White  
  73.     gct.Font = New Font("黑体", 10.5f, FontStyle.Bold) 
  74.     gct.Name ="标题"< /span >
  75.     gct.Text = s  
  76.     lg.FaceShapes.Add(gct)  
  77.   
  78.     range = New GaugeRange '添加颜色范围显示  
  79.     range.Location = 80  
  80.     range.Width = 15  
  81.     range.AntiAliasing = 2  
  82.     range.Border.Color = Color.Transparent  
  83.     range.ToPointerIndex = 100 '绑定到指针  
  84.     c1 = New GaugeValueColor '第一个颜色  
  85.     c1.Color = Color.FromArgb(55, 145, 221)  
  86.     c1.Value = 0  
  87.     range.ValueColors.Add(c1)  
  88.     c1 = New GaugeValueColor '第二个颜色  
  89.     c1.Color = Color.FromArgb(25, 233, 238)  
  90.     c1.Value = 2500  
  91.     range.ValueColors.Add(c1)  
  92.     c1 = New GaugeValueColor '第三个颜色  
  93.     c1.Color = Color.FromArgb(255, 203, 114)  
  94.     c1.Value = 5000  
  95.     range.ValueColors.Add(c1)  
  96.     lg.Decorators.Add(range)  
  97.   
  98.     slabel = New GaugeSingleLabel '添加数量显示  
  99.     slabel.Location = 35  
  100.     slabel.Color = Color.White  
  101.     slabel.PointerIndex = 100 '绑定到指针  
  102.     slabel.Position = 0.85  
  103.     slabel.Font = New Font("黑体", 10.5f, FontStyle.Bold)  
  104.     slabel.Format = "0"  
  105.     lg.Decorators.Add(slabel)  
  106.   
  107.     gg.Gauges.Add(lg) '把新的仪表添加到仪表控件中  
  108. Next