基于GDI+技术开发工业仪表盘控件

写在前面:

上次给大家看了一个上位机界面之后,很多人表示对那个仪表盘的开发感兴趣,今天就跟大家分享一下整个的开发过程,由于整个仪表盘开发的过程还是有些复杂的,无法将所有的代码都一一展示,所以重点跟大家分享一下开发的思路,毕竟每个人都会有自己的想法和风格。

01.效果图展示

先给大家看看实际项目中的应用效果图:

基于GDI+技术开发工业仪表盘控件_第1张图片

                                                                                    图表 1 项目效果图

对于这种仪表盘控件的开发,只能通过GDI+来实现。实际使用中,我们可以根据需要设置不同的样式,包括颜色、角度、量程等等,下面给大家展示一下:

基于GDI+技术开发工业仪表盘控件_第2张图片

                                                                                      图表 2 控件使用图

02.控件开发过程

GDI+开发控件其实并不是特别难,但是会比较复杂,涉及的东西比较多,需要有一定的空间想象能力,甚至是数学几何基础。

任何一个复杂的GDI+控件,里面无非就是字段(Field)、属性(Property)、方法(Method)、委托(Delegate)以及事件(Event)。其实属性是灵魂,GDI+设计及绘制就是围绕属性来进行开发的。

我们拿到这样一张效果图之后,第一步要做的事情是,确定需要设计哪些属性?

A:仪表盘部分:

(1)      GaugeColor:设置或获取仪表盘的边框颜色

(2)      PointerColor:设置或获取仪表盘的指针颜色

(3)      RangeMin:设置或获取量程的最小值

(4)      RangeMax:设置或获取量程的最大值

(5)      CurrentValue:设置或获取当前数值

(6)      RangeAlarmMin:设置或获取量程报警最小值

(7)      RangeAlarmMax:设置或获取量程报警最大值

(8)       TopGap:设置或获取整个控件的上下间隙

(9)       LeftGap:设置或获取整个控件的左右间隙

(10)   PointerRadius:设置或获取中心原点的半径

(11)   AlarmColor:设置或获取报警线的颜色

B:刻度值部分

(1)      BigScaleCount:设置或获取大刻度数量

(2)      SmallScaleCount:设置或获取小刻度数量

(3)      IsAllowFullCircle:设置或获取是否允许整圆显示

(4)      ScaleWidth:设置或获取刻度值的最大宽度

(5)      ScaleHeigth:设置或获取刻度值的最大高度

C:文本显示部分

(1)      TextColor:设置或获取文本颜色

(2)      UnitText:设置或获取显示单位

(3)      IsTextVisiable:设置或获取文本内容是否显示

(4)      TextGap:设置或获取文本显示位置与刻度的间距

通过一系列的分析之后,确定了设计以上20种属性,确定属性之后,即可通过重写OnPaint事件进行重绘,重绘步骤又是怎样的呢?

(1)      确定整体核心三要素(中心点、偏移角度、圆环半径)

(2)       绘制大刻度

(3)       绘制小刻度

(4)       绘制刻度值

(5)       绘制文本

(6)       绘制实时值指针

(7)       绘制报警框

写在最后:

本文旨在结合GDI+的相关技术介绍了一个仪表盘控件开发的整个过程,自定义控件在上位机开发中应用非常广泛,除了GDI+绘制控件以外,还有扩展控件和组合控件的应用。对于从事上位机开发的学员来说,学好GDI+是非常有必要的,可以大大增加你项目的扩展性和可视性。

                                                                                      欢迎关注抖音账号↓

 

基于GDI+技术开发工业仪表盘控件_第3张图片

 

更多精彩内容:

(点击即可阅读)

上位机C#通过OPCUA和西门子PLC通信

上位机开发之三菱FX3U以太网通信实践

基于C#实现本地数据上传至云服务器

上位机开发之三菱Q系列PLC通信实践

基于S7-PLCSIM Advanced搭建S7通信仿真环境

 

你可能感兴趣的:(上位机)