WinCE.net下图形用户界面的开发

前端之家收集整理的这篇文章主要介绍了WinCE.net下图形用户界面的开发前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

1.NET精简框中访问图形对象的方法@H_502_7@@H_502_7@ @H_502_7@@H_502_7@@H_502_7@

显示屏上绘图,@H_502_7@.NET精简框程序必须拥有@H_502_7@Graphics类的一个实例。对@H_502_7@.NET精简框类的研究发现,有两种方法可以访问@H_502_7@Graphics对象@H_502_7@[3]:一种方法是调@H_502_7@Paint事件,通过@H_502_7@Paint事件中提供的@H_502_7@PaintEventArgs参数的属性访问@H_502_7@Graphics对象。它由系统发出,主要处理窗体中的绘图,并通知一个窗体其内容需要重绘;另一种方法调用@H_502_7@CreateCraphics函数,利用调用返回的@H_502_7@Graphics对象绘图。虽然@H_502_7@CreateGraphics方法名称表示创建了一个@H_502_7@Graphics对象,但事实上并非如此。它只是向窗体″租用″了@H_502_7@Graphics对象,完成调用@H_502_7@Graphics对象后必须调用@H_502_7@Dispose方法返回对象。@H_502_7@ @H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@

2 WinCE操作系统下基于@H_502_7@VB.NET的窗体背景界面实现方法@H_502_7@@H_502_7@ @H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@

在桌面系统中为窗体设计一个漂亮的界面,可以直接加入@H_502_7@PictureBox控件,再将其属性中的@H_502_7@Image修改为需要的图片。采用这种方法,程序启动时,图片显示在背景窗体上,但读取一幅图片,需要消耗大量的内存空间。基于@H_502_7@VB.NET的界面程序,启动时本身需求的内存空间就非常可观,如果背景图片所需内存空间过大,可能会导致程序挂起。另外,考虑嵌入式系统频率低、内存少的自身特性,编写好的应用程序,应尽量节省内存空间。制作背景时,我们采用的方法调用绘图函数。@H_502_7@ @H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@

绘制窗体背景通常有两种方法。一种是使用窗体事件@H_502_7@Form_Paint;另一种是使用重绘事件@H_502_7@Onpaint。它们都提供@H_502_7@PaintEventArgs参数,利用该参数的属性访问@H_502_7@Graphics对象,编写绘图代码可以绘制窗体背景。由于这两个@H_502_7@Paint事件都是由系统发出的,当窗体创建、隐藏、放大或缩小时,它们都会自动调用@H_502_7@Paint函数中的代码重绘。值得注意的是:绘制窗体背景时,不能调用事件@H_502_7@Form_Load调用@H_502_7@Form_Load事件绘制的窗体背景在窗体中一闪而过,不能长时间停留,达不到显示效果。@H_502_7@ @H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@

OnPaint函数定义格式为@H_502_7@Protected Overrides Sub OnPain(@H_502_7@tByVal e As PaintEventArgs)。@H_502_7@Form_paint函数定义格式为@H_502_7@Private Sub Form_Pain(@H_502_7@tByVal sender As Object,ByVal e As System.Windows.Forms.PaintEventArgs)@H_502_7@HandlesMyBase.Paint。利用@H_502_7@e参数的属性访问@H_502_7@Graphics对象,可以绘制线条、多边形和各式文字。采用这种方法绘制的窗体背景所占用的内存空间比读取整幅图片时少得多,正好符合嵌入式系统内存少的特点。@H_502_7@ @H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@

3多个背景的窗体无效后重绘先前背景的实现方法@H_502_7@@H_502_7@ @H_502_7@@H_502_7@@H_502_7@

显示屏是多任务、多线程操作系统@H_502_7@WinCE的共享资源。为了避免程序间的冲突,同一时间系统只允许向显示屏发出的一个@H_502_7@Paint绘图事件。创建、隐藏、滚动、放大或缩小窗体和打开新文件都会使原来的窗体无效。窗体无效后,系统自动调用@H_502_7@Paint函数重绘窗体背景。但对于多个背景的窗体,窗体无效后,如何使@H_502_7@Paint函数重绘无效前的背景是我们要解决的问题。@H_502_7@ @H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@

我们通过在@H_502_7@OnPaint函数中设置旗帜变量实现了窗体无效后重绘先前背景功能方法如下:@H_502_7@ @H_502_7@@H_502_7@@H_502_7@

(@H_502_7@1)创建一个图形对象。定义格式如下:@H_502_7@Dim gp As @H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@

Graphics=CreateGraphics();@H_502_7@ @H_502_7@@H_502_7@@H_502_7@

(@H_502_7@2)在主窗体中定义一个旗帜变量。根据不同情况设置特定枚举值;@H_502_7@ @H_502_7@@H_502_7@@H_502_7@

(@H_502_7@3)使用条件语句判断绘图代码。符合哪个枚举值,就绘制相应的背景。@H_502_7@ @H_502_7@@H_502_7@@H_502_7@

下面举例说明具体的实现方法。图@H_502_7@1是一个窗体结构示意图。其中虚箭头表示绘制窗体背景事件,实箭头表示窗体无效事件。窗体无效后,绘制哪一个背景图是我们要解决的问题。三个虚箭头分别表示绘制声音录制、波形显示和频谱显示的背景图。我们在主窗体中设定一个@H_502_7@flag变量,标识主窗体无效前的背景图片。录制声音时,@H_502_7@flag的值置@H_502_7@1显示波形时,@H_502_7@flag的值置@H_502_7@2显示频谱时,@H_502_7@flag的值置@H_502_7@3。当主窗体调用打开保存文件、输入信息或显示结果事件后,主窗体无效。这时系统将自动调用@H_502_7@OnPaint函数,@H_502_7@OnPaint函数根据@H_502_7@flag的值,绘制窗体无效前的相应背景。@H_502_7@ @H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@@H_502_7@

@H_502_7@@H_502_7@@H_502_7@

4结束语@H_502_7@@H_502_7@ @H_502_7@@H_502_7@@H_502_7@

随着嵌入式系统应用领域的不断扩大,嵌入式系统开发需要考虑图形用户界面问题。我们在@H_502_7@WinCE@H_502_7@系统上开发语音频谱分析仪时,需要处理大量的图形绘制问题。根据我们的实践经验,总结出了一些实现图形用户界面的方法。通过调用@H_502_7@paint@H_502_7@函数绘制窗体背景,有效地节省了内存空间;通过在@H_502_7@OnPaint@H_502_7@函数中设置旗帜变量实现了窗体无效后重绘先前背景的功能。@H_502_7@

猜你在找的VB相关文章