嵌入式图片浏览器的设计与应用_何文喜
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机与现代化
2009年第1期
J I S UANJ I Y U X I A NDA I HUA
总第161期
文章编号:100622475(2009)0120012203
收稿日期:2007212220
作者简介:何文喜(19642),男,河北安新人,海军旅顺保障基地91555部队司令部工程师,研究方向:军事航海技术。
嵌入式图片浏览器的设计与应用
何文喜1
,晁大海
2
(1.海军旅顺保障基地91555部队司令部,辽宁大连116041;2.海军驻大连地区军事代表室,辽宁大连116021)
摘要:介绍了在基于W indows CE 的P DA 中设计图片浏览器的开发环境和关键技术,并给出了具体的编程步骤。
关键词:P DA;E VC;W indows CE;嵌入式;图片浏览中图分类号:TP311 文献标识码:A
D esi gn and Appli ca ti on of Em bedded B it map Browser
HEE W en 2xi 1
,CHAO Da 2hai
2
(1.Headquarters of Unit 91555,L üshun Naval I ndemnificat ory Base,Dalian 116041,China;
2.Naval Comm issary Office in Dalian,Dalian 116021,China )
Abstract:This paper intr oduces the devel op ing envir on ment and key technol ogies of a bit m ap br owser in P DA based on W indows CE,and then gives the concrete step s of p r ogram design .
Key words:P DA;E VC;W indows CE;e mbedded;bit m ap br owse
0 引 言
P DA (Pers onal D igital A ssistant )[1]
,是一种比笔
记本电脑还要小得多的手持式电脑。
目前,P DA 在工程测绘、智能交通和故障诊断等诸多领域得到了广泛的应用。
在上述应用领域中,往往涉及到对仪器设备原理图等图片资料的浏览。
尽管P DA 的操作系统本身提供了图片浏览功能,但功能有限,操作界面也不够友好,进而影响了浏览效率。
为此,本文将采用嵌入式技术设计一种基于P DA 的图片浏览器。
该图片浏览器既可作为P DA 的操作系统中的一个辅助应用程序,也可作为基于P DA 的工程应用系统中一个功能模块。
1 开发环境
开发该图片浏览器时用的硬件主要包括开发主机(台式机)、P DA 、存储卡和数据线等。
其中,P DA
采用W indows CE 4.2嵌入式操作系统(EOS )[2]
,内存(RAM )为64MB ,并带有存储卡插槽,操作方式为手写。
软件设计采用Embedded V isual C γγ(简称EVC )4.0+SP4开发工具。
E VC 是微软公司推出的开发W indows CE 应用程序的成熟的、强大的工具。
该开发工具和在PC 上开发程序使用的VC γγ在语法上没有太大差别,这样不但缩短了开发周期而且大大提高
了开发效率[3]。
为方便调试,在开发主机上安装W indows CE Platfor m S DK 作为P DA 的模拟环境。
当然,也可将P DA 通过数据线与开发主机连接进行实际调试。
W indows CE 应用程序的开发需要将程序下载到W indows CE 目标设备上运行,并且调试时的情况也是一样,因此在开发过程中,需要设置EVC 同目标设备的连接。
可以使用EVC 提供的Configure Platf or m
Manager 工具来设置该连接[4]
,也即设置传输方式和启动方式。
在本文研究过程中,模拟环境下调试时的传输方式和启动方式分别采用了T CP /I P Trans port f orW indo ws CE 和E mulat or Startup Server,而在开发主机与P DA 连接调试时均采用M icr os oft ActiveSync 方式。
2009年第1期何文喜等:嵌入式图片浏览器的设计与应用13
2 关键技术分析
本文结合P DA的硬件特性和操作方式,讨论图片的读取和显示、漫游以及中心缩放等关键操作的设计思想和编程方法[527]。
2.1图片的读取和显示
P DA一般不配备硬盘,但可以通过外接存储卡来存储文件,而且其内存兼有存储文件的功能,用户可以在内存设置中调节该功能所占用内存资源的比例。
当位图资料比较少时,可以将其存储在内存中,也可以将其添加到程序的资源中[8];当位图资料较多时,则只能通过存储卡来存储。
需要注意的是,从程序的资源中读取位图速度最快,但生成的可执行文件的大小将随着所添加位图资源的增多呈线性增长,容易导致可执行文件因内存不足而无法运行;采用从存储卡中读取位图的方式生成的可执行文件很小,运行时占用内存少,但读取速度比较慢;当把位图资料存在内存中进行读取时,尽管生成的可执行文件也很小,且读取速度很快,但P DA 较小内存不可能存储大量位图文件。
因此,可根据实际情况选择其中的一种或多种读取方式。
本文设计的图片浏览器采用从存储卡读取图片的方式,以适应实际应用中图片资料较多的情况。
从存储卡中读取bmp格式的图片采用函数SHLoadD I B it m ap,而读取j pg和gif格式的图片可采用函数SHLoad I m ageFile。
这两个函数均返回一个位图句柄,为位图的显示提供前提。
位图的显示使用StretchB lt函数,该函数可以实现位图的缩放显示[9]。
2.2图片的漫游方式
图片的漫游采用中心移动、多向滚动和拖动相结合的方式。
这三种漫游方式都是通过操作绘图函数StretchB lt中的参数xSrc和ySrc实现的。
这两个参数代表源矩形左上角的逻辑坐标值[10]。
(1)中心移动。
中心移动即当用户用手写工具点击当前屏幕上显示的图片时,图片将以被点击的像素点为中心,重新显示在屏幕上,从而方便用户对图片中感兴趣区域的浏览。
该漫游方式的算法如下:
设操作前后参数xSrc和ySrc的值分别为m1和n1、m0和n0,显示比例为k,屏幕点击处的坐标为(point.x,point.y),客户区中心坐标为(x,y),则有
m1=m0+(point.x2x)/k(1) n1=n0+(point.y2y)/k(2)此外,为保证漫游过程中屏幕不至于越过图片边界而造成显示空白,需要对参数xSrc和ySrc设置最大值。
将其最小值均设为0;设图片的像素尺寸为b mW idth b mHeight,已知客户区像素尺寸为scrn W idth scrnHeight,则最大值分别为: xSrc_max=b mW idth2scrn W idth/k(3)
ySrc_max=b mHeight2scrnHeight/k(4)
在利用绘图函数Stretch B lt显示图片之前,利用上述最大值对参数xSrc和ySrc进行约束,即可解决屏幕越界问题。
(2)多向滚动。
多向滚动方式将屏幕边缘划分为八个区域,不同区域被用户点击时,图片将向不同的方向滚动。
如图1所示。
图1 多向滚动的屏幕分区
例如,当用户点击屏幕左边缘时,图片将自动向右方滚动,将图片左面的部分呈现给用户,当用户再次点击屏幕或滚动至图片边缘时停止滚动。
实现该操作的关键是启动一个计时器[11],将图片每隔一定时间向指定方向移动几个像素。
该漫游方式特别适合用户对工程图中某一线条的跟踪。
(3)拖动。
拖动是一种常见的漫游方式,可以让图片沿着手写工具在屏幕上的移动轨迹而移动,非常适合手部的操作习惯。
实现拖动操作的关键是分别为手写工具的按下、移动和抬起添加消息响应函数,与利用VC开发工具在PC机中实现鼠标拖动位图的方法是一样的。
综合使用上述三种漫游方式,可以大大提高漫游效率,并从一定程度上减小因P DA屏幕小带来的不便。
2.3图片的中心缩放
利用前面提到的StretchB lt函数可以轻松实现图片的缩放,只需令其参数比值符合下面等式:
n W idth/nSrc W idth=nHeight/nSrcHeight
=k(显示比例)(5)同时,为保证用户当前浏览的图片区域在缩放后不会移到客户区之外,程序应在放大或缩小的同时响应“中心移动”令。
此时,若仍采用前面的变量定义,另设缩放前显示比例为k0,缩放后为k1,则缩放前后参数xSrc和ySrc的取值变化关系为:
m1=m0+point.x/k02x/k1(6)
n1=n0+point.y/k02y/k1(7)
采用上述算法后,当点击图片进行缩放时,缩放后的图片将以被点击的像素点为中心显示在屏幕上。
3 编程实现[12]
第一步:新建程序框架。
14
计 算 机 与 现 代 化2009年第1期
打开M icr os oft e Mbedded V isual Cγγ4.0,首先选择菜单项File→New→Pr ojects,然后选择WCE MFC App W izard[exe],假设Pr oject name为BmpB r owser,点击“确定”后,进入一个向导中,其中第一步选singledocu ment,语言选择英语,其它采用缺省值,点击Finish,则程序框架便生成了。
第二步:编制源代码。
(1)制作工具栏。
首先,修改资源管理器中T oolbar下的工具栏,修改后工具栏的样式可参照图2。
在视图类Bmp2 B r owser V iew中为“打开”按钮添加消息响应函数,用于将用户选择的图片加载到内存中。
然后,为“中心移动、多向滚动、拖动、放大和缩小”五个按钮添加消息响应函数。
定义操作模式转换变量,在这五个消息响应函数中为该变量赋以不同的值,以区分哪种操作模式处于激活状态。
(2)显示位图。
修改视图类BmpB r owser V ie w中的On2
D ra w,用Stretch B lt函数显示图片。
由于P DA内存小,且系统进程已占用了不少内存,而位图显示会占用较多的内存资源,因此要及时释放无用的资源,避免内存泄漏[13]。
(3)为屏幕点击操作添加代码。
在视图类BmpB r owser2 V ie w中添加On LButt on Down消息响应用户的点击操作。
根据前面介绍的算法,在上述函数中为中心移动、多向滚动、拖动、放大和缩小等操作添加相应代码。
上述五种操作是通过修改Stretch B lt函数中的相应参数来实现的。
其中,实现多向滚动操作时需要启动一个计时器,在OnTi m er函数中修改Stretch2 B lt函数中的相应参数;拖动操作还需要用到On Mouse Move和On LButt on Up消息[14];刷新显示使用Redra w W indow函数,该函数能有效地防止刷新时存在的闪屏问题。
(4)制作菜单。
修改Res ourse目录树中Me mulbar下的菜单项,设置“文件”、“视图”等菜单,可根据需要添加相应的子菜单。
第三步:编译、调试并生成可执行文件。
进行编译调试前,需要确认目标机器和编译类型。
模拟环境下,目标机器选择Pocket PC2003|Pocket PC2003E mu2 lat or,编译类型选择W in32[WCE e mulat or]Debug;连接P DA 调试时,目标机器选择Pocket PC2003|W in32[WCE AR MV4]Debug,编译类型选择Pocket PC2003Device。
图2是本文设计的图片浏览器打开一张电路图时的工作界面。
图2 图片浏览器的工作界面4 结束语
本文设计的图片浏览器界面简洁,操作方便,可以打开b mp、j pg和gif三种格式的位图文件,并实现图片的中心移动、多向滚动、拖动、放大和缩小等功能。
与P DA的W indows CE操作系统自带的图片浏览器相比,功能更完善,操作界面更友好,从而提高了图片的浏览效率。
同时,软件开发人员可以很方便地在该图片浏览器的基础上进行功能扩展,将其应用到实际工程领域。
例如,笔者在基于P DA的某型舰艇的航海仪器故障检测仪中使用了该图片浏览器进行仪器电路图的浏览和分析,收到了很好的效果。
参考文献:
[1] W ang An2Hsiang,Lai Yueh2Yuan,Sun Cheng2Tung.Effects
of pal m andW inCE menu2design for P DA on users operating
perf or mance and subjective p reference[J].D is p lays,2005,
26(2):972102.
[2] 彭飞,柳重堪,张其善.嵌入式系统的开发利器———
W indows CE操作系统[J].电子技术应用,2000(9):
28230.
[3] 王滔,胡强.工程质量监督管理系统的设计与实现[J].
计算机与现代化,2007(1):1152117.
[4] 汪兵,李存斌,陈鹏.E VC高级编程及其应用开发[M].
北京:中国水利水电出版社,2005.
[5] 韩丽萍,郭大波,任巨波.图片浏览功能的实现[J].渤
海大学学报(自然科学版),2004,25(4):3772379. [6] 王舒宜,徐波,杜悦良.用V isual Cγγ实现W indows位图
显示[J].现代电子技术,1998(6):325.
[7] 唐振军.位图浏览器的设计[J].电脑编程技巧与维
护,2007(3):60261.
[8] 张利浩,王勇.显示位图的几种不同方法及其比较[J].
电脑编程技巧与维护,2000(8):84286.
[9] Jeff Pr osise.M FC W indows程序设计(第2版)[M].北
京:清华大学出版社,2001.
[10]谭锋.在基于M FC的VC程序中缩放显示位图[J].内
江科技,2007,28(6):36.
[11]张玉双,岳玉芳,李有宽.结合三维视景的自定义位图
动画实现[J].计算机工程与设计,2007,28(1):
1552157.
[12]侯俊杰.深入浅出MFC(第2版)[M].武汉:华中科技
大学出版社,2001:227.
[13]胡荣华,楼佩煌.基于掌上电脑的工业现场无线视频监
控技术研究[J].计算机测量与控制,2006,14(7):
8812883.
[14]傅丰.高级窗口客户区域拖动的实现方案[J].天中学
刊,2005(2):46248.。