| 大屏幕图像的快速保存和恢复
| | 高中计算机论文摘 要 该文介绍了一种在图形状态下能快速保存和恢复任意大小,任意数目的高中计算机论文屏幕区域的高中计算机论文新算法及其c实现,该算法可代替turbo c 2.0, borland c++ 3.1中的imagesize, getimage, putimage位图函数,屏蔽内部实现细节。适合于需要保存和恢复大屏幕图象区域的工程软件及使用多级菜单窗口软件系统中。 一、turbo c borland c++中的三个位图操作函数 unsigned far imagesize (int left, int top, int right, int bottom); void far getimage (int left, int top, int right, int bottom, void far *bitmap); void far putimage (int left, int top, void far *bitmap); 原型在graphics.h中,这三个函数用于把屏幕上的一个位图拷贝到主存储区(640k内),然后把它放回屏幕。getimage将屏幕上的一个矩形区域的位图拷贝到主存储区(640k内)中,left、top、right、bottom四个参数用于定义屏幕上的矩形。bitmap指向主存储区中存放位图的区域。该区域前两个bytes用于存放矩形的宽和高。其余部分存放位图本身。imagesize决定getimage用于保存指定矩形所需的字节数。它返回的位图大小包括用于记录矩形的宽和高的空间。putimage将以前用getimage保存的位图重新送回屏幕。位图左上角位于(left, top),bitmap指向主存储区中存放位图的区域。 以目前最通用的vga 640*480*16色方式为例,当需要保存整个屏幕区域时约需640*480/2=153,600 bytes,约合150 kb左右。而imagesize计算存储指定目标区域所需字节数,若指定区域要求字节数> = 64k-1则返回0xffff (-1),使程序无法存储。另外,getimage所需的缓冲区是从heap中申请的或是静态申请的。因此要占用宝贵的640k常规内存。如果有>=640kb/150kb=5幅的大屏幕图像需要保存和恢复,则内存将会用尽而出错。在大型工程软件项目及各种gui中,快速保存及恢复屏幕图像已成为一种良好的界面设计方法,因此本文介绍了一种简便,易行的新算法用于替换上述标准的位图操作函数。 二、三个新的位图函数
| | | |
|