基于WPF技术的典型工业检测系统上位机软件显示模块的开发

时间:2022-06-05 08:34:58

基于WPF技术的典型工业检测系统上位机软件显示模块的开发

摘要:对于一个典型工业检测系统上位机软件显示模块的开发,一般使用Visual Basic、Delphi、Visual C++、C# Windows Form等开发工具。该文分析了微软新推出的WPF技术,可以更加方便快捷地开发显示模块的二维图形和三维图形,且用户图形更加美观漂亮。

关键词:显示模块;WPF;二维图形;三维图形

中图分类号:TP311文献标识码:A文章编号:1009-3044(2010)18-4985-02

The Display Module Development of Typical Industrial Measurement System upper Computer Software by Using WPF

HE Ying

(Jiangxi Institute of Measurement and Testing Technology,Nanchang 330000, China)

Abstract: In order to develop the display module of an ordinary industrial measurement system upper computer software, Visual Basic、Delphi、Visual C++、C# Windows Form and so on are commonly used. WPF technology come up with Microsoft Company is analyzed in this paper. It is more convenient to develop two dimensional graphs and three dimensional graphs by using WPF technology. And the user interface is more beautiful.

Key words: display module; WPF; two dimensional graphs; three dimensional graphs

对于一个典型工业检测系统上位机软件的显示模块来说,Visual Basic、Delphi、Visual C++、C# Windows Form等开发工具都能满足其开发需求,本文讨论了微软新推出的一种WPF技术,借助该技术,可以更美观快捷地实现典型工业检测系统上位机显示模块的开发。

1 典型工业检测系统上位机软件显示模块的需求和传统解决方案

一个典型的工业检测系统上位机软件通常具备和下位机通信的通信模块、处理和保存数据的数据处理模块、和用户进行人机界面交互的显示模块。对于和用户进行人机交互的显示模块,通常需要实现以下功能:

1) 用户输入和操作界面;

2) 相关检测数据的显示;

3) 显示二维图形;

4) 显示三维图形。

对典型工业检测系统上位机软件显示模块功能需求的传统解决方案通常是使用Visual Basic、Delphi、Visual C++、C# Windows Form等开发工具,这些开发工具提供的界面控件可解决1)和2)的需求,使用这些开发工具调用Windows form的GDI+ API函数可显示二维图形,调用DirectX3D提供的API函数可显示三维图形。调用相关API函数和维护界面图形的无效和重绘均需做大量的工作。

2 WPF技术介绍

自从在Windows的第一个版本中首次出现以来,构成Windows用户体验核心的图形子系统(USER32和GDI[1]库)实际上已经诞生了将近二十年。当然,随着时间的推移,USER32和GDI经历了重大的演变和发展,并且在所有领域都引入了很多新的服务和功能。同时,还出现了诸如Direct3D这样的新呈现技术,这些技术能够充分利用在最新的视频卡中公开的图形功能。但是,目前的大多数主流应用程序都没有提供这些图形卡实现的体验。

Windows Presentation Foundation[2]是Windows中新的关键图形子系统,它为用户界面、2D和3D图形、文档和媒体提供了统一的方法。它在.NET Framework[3]基础上生成,并利用Direct3D进行基于向量的呈现,为生成所有种类的应用程序提供了强大的解决方案。另外,Windows Presentation Foundation通过提供声明性编程模型[4]来实现“工具性”和灵活性,从而使设计人员成为开发过程不可分割的组成部分。

WPF可以认为是Microsoft利用原有.NET框架的一些特色,加上DirectX的产物。WPF体系结构如图1所示。

Windows Presentation Foundation中的所有呈现操作均通过Direct3D完成。过将更多的图形处理操作移动到GPU中,可以让CPU有能力完成其他工作而提高性能,同时改善图形的质量。然而,这些优点并不局限于3D领域,2D图形也利用了相同的服务;Windows Presentation Foundation内部未使用GDI(除与旧式元素集成)。

3 基于WPF技术的典型工业检测系统上位机软件显示模块的需求实现

针对典型工业检测系统上位机软件显示模块,使用WPF技术的解决方案分别叙述如下:

3.1 用户输入操作界面和相关检测数据的显示:

任何一个完整的现代图形呈现框架都应该为开发人员提供标准控件集,便于他们快速地构建传统用户界面。WPF包含许多这种控件,常见的控件可分成4个不同的种类:

内容控件:是只允许包含单一项(item)的简单控件。如Button控件、CheckBox控件、RadioButton控件、Label控件ToolTip控件、Frame控件、GroupBox控件、Expander控件等。

Items控件:Items控件包含了一个拥有许多Item的集合而不是只是一条内容。如Selector控件、ComboBox控件、ListBox控件、ListView控件、TabControl控件、Menu控件、ContextMenu控件、TreeView控件、ToolBar控件和StatusBar控件等。

Range控件:Range控件不会像内容控件或者Items控件那样渲染任意内容,它们仅在一个指定的范围内存储并且显示数值。如ProgressBar控件、Slider控件等。

文本和墨水控件:是用来显示和编辑文字的控件,用户可以通过键盘、鼠标和指示笔等进行输入。如TextBox控件、RichTextBox控件、PasswordBox控件、InkCanvas控件等。

利用WPF提供的这些控件,可以完美地实现用户输入操作界面和相关检测数据的显示,而且界面比用GDI或GDI+技术的更加漂亮。

3.2 显示二维图形

在立即模式(immdediate-mode)系统(GDI、GDI+、DirectX等)中,可以将图立即绘到屏幕上,但同时必须维护所有的可视件的状态。也就是说,当屏幕的一块区域无效时,要画出所有正确的像素点。这种无效可能是由用户动作导致的,例如改变窗口大小,也可能由特定应用程序要求更新外观导致的。

WPF绘图的主要特点在于它是一种纯粹的保留模式(retained-mode)的图形系统,在保留模式系统中,能够描述高级别的概念,系统会记住这些状态并且维护它们,不需要担心无效和重绘,这能够节省相当数量的工作。

常用的显示二维图形所需要的类有三种:

Drawing类:指的是对与填充相关联的路径和形状的简单描述以及轮廓Brush。

Visual类:是把Drawing画到屏幕的一种方式,但它也提供了完全摆脱Drawing对象的底层轻量级实现。

Shape类:是预制的Visual,它是在屏幕上画自定义工艺图(artwork)最简单(也是最轻量级)的方法。

3.3 显示三维图形

利用WPF技术绘制三维图形题是非常方便的,在WPF技术中,使用3D特性的几个最重要的类为:

ViewPort3D类:定义了3D对象的渲染表面,这个元素包含3D绘图的所有可见元素。

ModelVisual3D类:定义在ViewPort3D中,它包含了所有可见元素,可以给完整的模型指定变换。

GeometryModel3D类:包含在ModelVisual3D中,它包含网络和材质

Geometry3D:Geometry3D是一个抽象基类,定义了几何形状,派生于Geometry3D的类是MeshGeometry3D,可以定义三角形的位置,建立3D模型。

Material类:定义了MeshGeometry3D指定的三角形的前边和后边。

Light类:定义了三维场景中灯光的特性。

Camera类:定义三维场景中的摄像机特性。

WPF中的所有呈现操作均通过Direct3D完成,三维呈现当然也不例外。但在WPF中绘制三维图形,相对于使用Visual Basic、Delphi、Visual C++、C# Windows Form等开发工具调用DirectX3D中的API函数要方便快捷很多,显示效果和性能也不逊于使用Visual Basic、Delphi、Visual C++、C# Windows Form等开发工具调用DirectX3D中的API函数。

4 小结

使用微软新推出的WPF技术可以完美地开发典型工业检测系统上位机软件的显示模块,相比使用Visual Basic、Delphi、Visual C++、C# Windows Form等开发工具,使用WPF技术开发更加方便快捷,而且由于WPF中的所有呈现操作包括二维图形和控件显示均通过Direct3D完成,开发界面更加美观漂亮。但由于WPF技术的CPU开销较大,而且缺乏性能极高的应用程序所需要的关键功能,包括保证在代码的特定地方运行的内联函数和析构函数。如果检测系统上位机软件的实时性要求非常高的话,应视具体情况慎用WPF技术。

参考文献:

[1] Iseminger D.WIN32开发人员参考库第3卷Windows图形设备接口[M].北京:机械工业出版社,2001.

[2] Petzold C.Applications=Code+Markup:A Guide to the Microsoft Windows Presentation Foundation[M].Microsoft Press,2006.

[3] 张志学.NET框架程序开发指南[M].北京:清华大学出版社,2002.

[4] Nathan A.Windows Presentation Foundation Unleashed[M].Sams,2006.

上一篇:ASP网络程序设计中的优化方法 下一篇:仿生机翼流场的数值模拟