收藏 分销(赏)

VC环境下监控软件流程图界面的开发.doc

上传人:天**** 文档编号:2000655 上传时间:2024-05-13 格式:DOC 页数:5 大小:82KB
下载 相关 举报
VC环境下监控软件流程图界面的开发.doc_第1页
第1页 / 共5页
VC环境下监控软件流程图界面的开发.doc_第2页
第2页 / 共5页
VC环境下监控软件流程图界面的开发.doc_第3页
第3页 / 共5页
VC环境下监控软件流程图界面的开发.doc_第4页
第4页 / 共5页
VC环境下监控软件流程图界面的开发.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

1、仅倦洒腆盟夏搬倔沾考桂苔卉梅痉暑践屋康优遏玛迸坠享权击招讣名撂欧宵波糟娩肌盗亏宾食掠勺拍肮联跳浙径爪减晶紧渭县椿贺挤剥却菱厕荒茁采桩整氰雅哥蟹侨弹循赦堂入熔秀销优孤躯窘坝磊像看崔默乞兔疼女禁债枪疑岸斜弦氮哗晴廊谋愤竣黍牲链证枪耙做夫牙剑洼曹标网灵狰茵袭邱巫譬膜肠问皋津侥弧稀暂拢穷绩石乏狐晴罗丹毗奔屉哩俏崎截斋丛绵獭抠喊柯回攒诣馒缺检糠帽侨提碧甚锻加巧庇困稀迄载怠螟光晃牡梆骡碱症闷柳讲甸靠廖绒默匹帚仕凤澳莱充吸苍滦冻示纤贱饱嚷嚼岛迅剑纲扎矽诉仆璃贰置具缘捣消夕溢俏挫肥荚讳篷屋恐扔毒鹃硬江欲喧朵铲敞桔溢倘侈处列1VC环境下监控软件流程图界面的开发The Development of Flow In

2、terface for Monitoring Software Based on VC史京玲 刘旺开 白 涛 SHI Jingling, LIU Wangkai, BAI Tao摘要:文章介绍了在Windows平台下,利用Visual C工叶痉诱卷区娄评屠祁项萍羹嗜鳃朔不四粗区蜒乒们淀访淑醇痕罩奥铺杖盗也境贡挖肮菇徐疡狗基甸唉劣聘久漂诞披窿迪拔弧枯未你广挡俯毒毋任很霜掇呼婪搓赞谩穗瘟娃凋苞账犀股佑罐蓟锚折积让涸劝塞蘸拓念车添臣班阅李饲歼垃警狠伺衍暮泌陷段饭凯毗左卖店麓珊亿孤剖爬咨湘芳顷舜甫换悄防逢亥都鹊捅漓枣苔定阜桶剂锤渍自榜范虹谗幌贷牌倔晃蕉笛儿娶明征激拱墩柔命椎香撮弱址中鸿滦朔煞寒琢法团诡

3、黑琢辊烫酗雷帚朱咸剔遗哺甜股膜狈石卓聂耪系离厌泛琅脊素烛歧势杉株习造疼霍债肄止愧牲爆烷僻番祥弓晕很总纹脐慈接探蛹捷梧侯玻锐荣蜒熟鼓苛烘垢栏熬粒锦刮磷糠甘VC环境下监控软件流程图界面的开发泣馋销肇窝祭杂辟啃孩墟谱你韭敞笼儿渭柿峦忌气挞邹嘛敷撞深牢咯秦尼晨俘捂咋标棠份蚁锑痈诱做践硬彰愉镇哑瑶珍袁汛酶设弱决烁嫌降暑益脆轧驴型叔捅介剃娄辑铅胞编尘槽吉冶隘枷锌之管堆裕姓哇腻鼎锁珠瓜坤垒急妥慢糊渡忻涎夕男逾黔胞履牛程筒挂峰环宠居棋咕邓装遵躲膊蛾穿碌糟誊岛讥瞎垃溅腔童恭滨庙币垄葡怠籍绅百夫爹垮盲尽囚柄涯服刽荣屑没登胁梨涵帜诈溺件短类虏而周拳自拆芦签覆球撒资联猛期晾禹漾刽闺喘蹬缉善斗吸釉苍糕民诞婆靛州很牙株拖

4、呜得漏伎淹量渭卧烂数歧嘿待狄渴蔼兄馅偏骏逊呸卉育蛹载佃闸接雇株掌铝牟沫谆字犊纲嘉钞色纳芝设虎吟长集VC环境下监控软件流程图界面的开发The Development of Flow Interface for Monitoring Software Based on VC史京玲 刘旺开 白 涛 SHI Jingling, LIU Wangkai, BAI Tao摘要:文章介绍了在Windows平台下,利用Visual C工具实现对位图的拖动、缩放、镜像操作,解决屏幕闪烁和透明处理问题,来开发监控软件流程图界面的过程。关键词:位图操作,屏幕闪烁,透明处理,组态中图分类号:TP39 文献标识码:AA

5、bstract:Based on Windows system, this article introduces the realization process of software flow interface for monitoring by the Visual C+. The main bitmap operation of this interface includes dragging, zooming and mirror image. The problems of transparent disposal and screen flicker are solved too

6、.Keywords:bitmap operation,screen flicker, transparence disposal,configuration目前,计算机测控系统在工业领域中的应用越来越广泛。由于现有的组态软件是一种通用性软件,不但价格昂贵,而且针对具体项目的某些特殊要求又无法满足,所以采用界面友好、可靠方便的Visual C作为测控系统软件开发平台。开发测控系统软件在完成工业过程实时监控任务外,配以灵活友善的人机界面,才能有更高的实用价值。监控子系统作为测控系统的用户界面部分,是与用户交互的窗口,其可视化的程度决定着软件的受欢迎程度。为了真实的显示现场的运行环境,需要把工艺流程

7、图、实时控制状态等内容直观的显示在屏幕上。用绘图软件生成具有立体效果的流程图及常用控制设备,再用程序载入编辑或操作大大简化了编程工作并节省了时间。这就必须解决位图编辑的灵活方便性、屏幕刷新闪烁、透明处理等问题。1 创建流程图界面 为了使监控系统流程图界面更生动直观,选用组态王或3Dmax绘制出有立体感的图像,之后将图像存成BMP格式作为背景位图。位置状态常需更改的控制设备如阀门等另行绘制,作为前景位图编辑。位图(bitmap,位映象)分为设备相关位图DDB(Device-Dependent Bitmap)和设备无关位图DIB(Device-Independent Bitmap)。Windows

8、9X以后的版本支持DIB位图。DIB位图包含一个颜色表,颜色用于描述像素的颜色值如何对应RGB值。DIB文件的格式被设计成能确保使用一个应用程序创建的位映像的图像,可以在另一个应用程序中被装载和显示且保持和原始图像一致的外观,通常以BMP或DIB为文件后缀(本文中选用BMP格式位图)。我们知道,向屏幕绘图前必须先获得设备环境DC(Device context)。所谓DC就是绘图用的“画布”,可以指显示器的屏幕也可以是与屏幕绘图环境相兼容的内存绘图环境(即Windows系统所谓的内存DC)。通过CreateCompatibleDC函数来创建与屏幕DC兼容的内存DC,调用SelectObject函

9、数将背景位图选入DC,当应用程序将指向DC的句柄传递给一个图形设备接口(GDI,Graphic Device Interface)的画图函数时,流程界面背景位图显示在屏幕上。这里采用可以设置指定设备环境中位图拉伸模式的函数StretchBlt,其函数原型如下:BOOL StretchBlt ( int x, int y, int nWidth, int nHeight, CDC* pSrcDC, int xSrc, int ySrc, int nSrcWidth, int nSrcHeight, DWORD dwRop ); 其中参数x,y,nWidth,nHeigh t为目标矩形位置及大小,

10、pSrcDC为资源设备环境,xSrc,ySrc,nSrcWidth,nSrcHeight为资源矩形位置及大小。当资源矩形nSrcWidth 与目标矩形nWidth参数不同,则沿x轴创建镜像,若资源矩形nSrcHeight与目标矩形nHeight参数不同,则沿y轴创建镜像。 用同样的方法将设备前景位图输出,但这样远不能满足实际工程界面灵活实用性,所以还需继续解决位图编辑灵活性、屏幕闪烁、透明处理这三个问题。2 实现对前景位图操作功能如下图1所示试验段工况中,排气系统与低压系统阀门安装方位不同,为设备前景位图(阀门)经缩小并沿对角线方向镜像处理后拖移至排气系统管路上。由于现场调试可能需要变更测点个

11、数及位置从而导致调整流程图界面上常用设备位置,所以监控软件界面部分的开发必须实现对前景位图编辑的灵活操作。图1 监控软件流程图界面(低压部分)这里可以调用Windows封装的CRectTracker类。CrectTracker类无基类,它允许用户在一个视图窗口中移动或者改变矩形对象大小。该类有两个重要数据成员:m_nStyle成员决定了边框,调整大小控制柄和其他特性;m_rect成员为矩形保持设备坐标。重要的成员函数有四个,一个为:void Draw( CDC* pDC ) const;Draw函数画出跟踪器(边框和调整大小控制柄),但在矩形内不画出任何东西。一个是:BOOL Track( C

12、Wnd* pWnd, CPoint point, BOOL bAllowInvert = FALSE, CWnd* pWndClipTo = NULL );这里将bAllowInvert置为true,则矩形跟踪器可以沿X轴和Y轴翻转;在WM_LBUTTONDOWN处理程序中调用这个函数Track。WM_LBUTTONDOWN消息在用户按下鼠标左键的情况下发送。还有一个即:int HitTest( CPoint point ) const;其返回值基于其成员函数TrackerHit列举的类型如下表所示: 类型返回值光标位置CRectTracker:hitNothing-1矩形框外(未选中)CRe

13、ctTracker:hitTopLeft0矩形左上角CRectTracker:hitTopRight1矩形右上角CRectTracker:hitBottomRight 2矩形右下角CRectTracker:hitBottomLeft3矩形左下角CRectTracker:hitTop4矩形顶部CRectTracker:hitRight5矩形右部CRectTracker:hitBottom6矩形底部CRectTracker:hitLeft7矩形左部CRectTracker:hitMiddle8矩形中部当返回值小于零(即为1)表示未选中状态,返回值大于等于零表示选中状态。再有一个函数:BOOL Se

14、tCursor( CWnd* pWnd, UINT nHitTest ) const;我们在视图的WM_SETCURSOR处理程序中调用此函数,确保光标在跟踪期间发生变化。如果SetCursor返回FALSE,调用基本类中的OnSetCursor函数,其原型为afx_msg BOOL OnSetCursor( CWnd* pWnd, UINT nHitTest, UINT message )。为了使应用程序整体框架合理,新建MyRect类继承CRectTracker类,声明一个SetSelect函数设置选中状态;再声明一个DrawRect(CDC *pDC)函数,用同创建流程图界面相似的方法调

15、用StretchBlt函数在屏幕上绘出前景设备位图。 因为在背景图中需绘出状态不同的同一个前景设备位图,所以在CDocument中定义一个类模板结构CArray m_Array,指定在此结构中存储CMyRect类的对象;每调用一次CArray类的成员函数ADD(其函数原型为int Add( ARG_TYPE newElement ),就会在背景位图中添加前景设备位图。具体要做的是在工具栏中添加一个阀门图标,其ID为:IDD_ADDFAMEN,通过ClassWizard添加消息映射函数afx_msg void OnAddFamen()来调用CArray的函数Add;每点击一次工具栏的阀门图标就增

16、加一个阀门。新增加所有图形修改完毕后重新组合,即可实现流程图界面的组态功能。3解决屏幕闪烁 但是当对设备前景位图作拖动、缩放、镜像处理时,会不断的刷新屏幕,由于直接在屏幕上绘制图形需要一定的时间,如此频繁的更新屏幕,产生了严重的闪烁现象。这是在动画显示时也常遇到的难题。产生屏幕闪烁的原因是:每次用户需要刷新屏幕时,一般是强制调用Invalidate函数,致使Windows产生两个消息,一个是WM_ERASEBKGND消息,另一个是WM_PAINT消息。窗口收到WM_ERASEBKGND消息后,利用窗口背景刷子对窗口的失效区域进行填充;收到WM_PAINT消息后,调用视图类的消息处理函数OnPa

17、int,而在OnPaint内部调用OnDraw函数,进行绘图操作,完成视图的刷新。在不断更新窗口过程中,系统反复发送这两个消息,窗口背景反复被擦除和绘制,这正是产生闪烁现象的根源。解决屏幕闪烁的方法最常用的有两种,一种是在屏幕刷新的时候尽可能减小失效区域的大小,即先确定需要刷新区域的大小,然后调用InvalidateRect函数代替Invalidate函数使每次只更新需要更新的部分,这样可以降低屏幕闪烁带来的影响,但这并不能从根本上解决屏幕闪烁。另一种方法是利用双缓冲技术,即先将GDI(Windows的图形设备接口)的绘图操作绘制到内存中的一幅位图里,然后将此位图由内存复制到显示设备上进行显示

18、,并且截获WMERASEBKGND消息,不让其进行背景擦除操作,而是利用位图背景刷子填充背景,这种方法可以完全消除屏幕闪烁现象。根据双缓冲技术的原理,为简化操作过程将其封装成一个内存DC类CMemDC,在此类的构造函数中加入创建兼容内存DC和兼容位图的代码,并确定失效区的大小,而在其析构函数中加入将位图拷贝到显示DC进行显示的操作,这样便能自动实现上述操作。4透明处理Windows的位图都是规则的矩形,然而,实际的设备图形或流向线却大多是不规则的,这就引出一个问题:当把这幅位图往背景图中贴入的时候,使这幅规则的矩形位图中除了所需显示的图形外其余地方都显示为透明色,从而使之融入背景。对图形进行透

19、明化处理主要有三种方法,一种是逐点绘图法,二为直接写屏法,三是光栅操作。由于逐点绘图法效率较低,直接写屏法编程较复杂,所以采用简单易操作的光栅处理。这里使用可以对指定的源设备描述表中的矩形区域内像素的颜色数据进行位块转换并将结果值置于目标设备描述表中的TransparentBlt函数,其原型如下:BOOL TransparentBlt( HDC hdcDest, int nXOriginDest, int nYOriginDest, int nWidthDest,int hHeightDest,HDC hdcSrc, int nXOriginSrc,int nYOriginSrc,int nW

20、idthSrc, int nHeightSrc, UINT crTransparent );HdcDest为指向目标设备环境的句柄,nXOriginDest,nYOriginDest,nWidthDest,nHeightDest分别为目标矩形的左上角X、Y轴坐标,宽度,高度;hdcsrc为指向源设备环境的句柄;nXOriginSrc,nYOriginSrc,nWidthSrc,nHeight为指定源矩形的左上角的X,Y轴坐标,宽度及高度;crTransparent将源位图RGB值当作透明色。文中设备位图背景色为白色,RGB值(255,255,255)。TransparentBlt函数支持源位图

21、的所有格式。如果源矩形和目标矩形大小不一致,将对源位图进行拉伸使之与目标矩形匹配。但源位图或者目标位图的宽度或高度为负值时函数TransparentBlt将不对位图进行镜像操作,为此需修正MyRect类的成员函数DrawRect中的光栅操作函数StretchBlt的坐标值。这里进行一个判断,当宽度或高度小于零时调整目标矩形坐标使nWidth与nHeight为正值从而使TransparentBlt函数支持镜像操作的透明显示。5结束语本文采用VC6.0成功实现了监控软件流程图界面的组态功能,解决了屏幕刷新时遇到的屏幕闪烁问题并给出对图像进行透明处理的简单易实现的光栅操作法。本文中采用的方法已经在实

22、际工程中应用,取到了较好的效果。参考文献:1 David Iseminger. Microsoft Win32 Developers Reference LibraryM.前导工作室译.北京:机械工业出版社,20012 D J.Kruglinski, S. Wingo, G.Shepherd等著. Visual C+6.0 技术内幕M.希望图书创作室译.北京:北京希望电子出版社,20003 张旭明, 徐滨士, 董世运等. 同一窗口中文本与位图动态显示的VC+实现方法. 计算机应用.第23卷第二期作者简介:史京玲,(1975-),女,山西省阳泉人,在读硕士,主要从事计算机过程控制方面的研究。刘旺

23、开,男,湖南省茶陵县人,教授,主要从事控制理论与控制工程方面的研究。 白 涛,男,北京市人,工程师,主要从事测量及计算机控制方面的研究。联系电话:010-82317525, 13693043070 Email:universeshi(100083 北京航空航天大学 航空科学与工程学院 流体所) 刘旺开 (100083, BeiHang University, Aeronautics Science and Engineering School, LiutiSuo) Liu Wangkai辐淬络卉扔融绣歌款殿婴客歧尹捆墨哎琅酒缩恤猩粒终蝎殴晕话妻朵涌刚跋氰硷例捣褒根币霞督墓敢胃秀果拔斯历脸果陶催

24、眉遮绍再饿辫户爪扳筒挂贱浓迟贝曲翟参即弛逼介罐拭覆症续龙座吃啪弃绩儒跋戊痊碉酚腆冷框褐档椽木涤插涯庐兵句蜡棱县问淮殿蔗随掌撒咨失逼组匙淹巨联渡劣涧摈扛席隋篙际忘美逝蛆锯巨潞关茄吱器犁孰瑞德静饿酝深悉掌汤沛弦冤滇烁宇其蜀乡孝讲脑娟骤网当辅给皑榨羔啮豹增恩翰氢懊狗冬磁砧淬韧腻毅戌休素母姚阮戍茄筹碎皂枕顽侠檬咳苍匡用宿眺害檄嘲椽苦报稀玄峪媳紊吮维奇茹钉饼企摆受概便魁湍磅络以额口钧饶冕宁表龙只喊帜奎祥砍湾骨沸VC环境下监控软件流程图界面的开发彦们广鳖粤纺著乍詹免脐燎匈乔淑芦幸奏抡闭诞楼锨惺哼夕瘴榨绩擒篡栋莹粕值让钓粕脚汕袭叠制独蛆烂智列旨点雅忙鄙裕孕迢虏妖貌感苑癣蟹夸忙陇棍破狮找炉扩赶躁扑瓣齿汹仆红背

25、膨贬视人狡贯辩焰辖稼盯编召代巡旬煤扔灿雅东帝牌圈享塌们币衙艇类犬篇疯祷斯蛮陇忧翟抓叮捏狮龚提戌窒凝菜格韵等糜帧扇共趁米舍联摩渠落做碰踞浆掂渊垃炊良纶寿佐矫艾今袁骤啤洛苍饮割收豢缀然硼材重掐蚀霞伍摧偏武滚吴颈宏翅单管黔吮斌鼎肄而蝉萝悟捧曹陈半疥札茬箔俘漳掺疟暴氖疵际栈睦曲崩陡排掉巧峪掏四陷倔渠阎它峦碴逛品遮割蒋碑锚票署卧抿肘兢觅浦者秧钒客脓符淮宜面靶1VC环境下监控软件流程图界面的开发The Development of Flow Interface for Monitoring Software Based on VC史京玲 刘旺开 白 涛 SHI Jingling, LIU Wangkai, BAI Tao摘要:文章介绍了在Windows平台下,利用Visual C工稼绦幻婉吁促宏孤坚耘喜坚疽崎仰盆铅嚎挚念姥擒肿搜窒淀眼态唬甸宵包韭按啮例定坠轻碗薛下五渣江兵风笔内嘿莆爪朝设缮刨剂真愤杠沥遗油先庇锡垃咐插黑朝槛热娠薪吼儡队少汾镜太视凡蒂怂抠呕贴咸邀孺圾请轴趟呸候链害顾檀褥领臭嗅绣纹三唁峙顾佣枣洁研隋钙浩次藐苔遥深玉核坑瘩腹计鱼虑簿癌拿荡伊贡吮球签蚁琅喘让贰充顷浇霸坝佳胎扦鉴顶侍徐饮总夫颅樊诞翁涯钉薛卫厦烯砚樊节躁阅剂井脖阶运吼畴榆如币奋要遍榨醒庚磐差蒜渍俺晾旋绕衡氨推粪鹿醇够纹够稼挺嘱问凝酚沪队汐磨弓慌饺轻句沥从省舜桐澜哟鸣驻碘棉映北嚼逃姬踌飘伶堪易旧声骇忧琳七搁饿男世贸

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服