SVGA图像处理 --免费毕业论文、毕业论文范文、毕业论文格式、毕业论文提纲,毕业论文网,提供计算机应用论文,计算机论文,工学论文毕业论文提纲、毕业论文范文、毕业论文格式等.
喜欢WitkeyCity.Com,请把WitkeyCity.Com告诉你QQ上的5位好友,多谢支持!
网站地图
合作联系
收藏本站

首 页 经济学论文 财政税收 证券金融 管理学论文 会计审计 工商管理 财务管理 公共管理 法学论文 理学论文 医药学论文
政治论文 社会学论文 文学论文 教育类论文 工学论文 计算机论文 艺术类论文 哲学论文 文化论文 英语论文 应用文 论文写作指导
邮电通信

   
 ·推荐免费论文
·2007县委办公室先进性教育活动工
·用科学发展观统领农业和农村经济
·计算机实习报告范文
·调查报告:大学生眼中的电子商务
·当前农村初中生学习心理的调查报
·求职信的格式和写作要点 
·英文简历写作的注意事项 
·毕业论文写作的基本要求
·计算机软件许可证协议书
 ·最近更新论文
·在电子商务中如何正确的使用数据
·大型ORACLE数据库优化设计方案
·在VB6.0数据库程序开发中使用ADO
·浅谈VFP报表打印问题
·通用网页查询函数的设计与应用
·构建校园网页面电子邮件系统
·Delphi中画布应用两则
·利用RCM2200实现以太网与异步串口
·Oracle数据库的优化
 ·推荐链接
   当前位置:首页 > 计算机论文 > 计算机应用 > 论文正文
联系我们 客户反馈

SVGA图像处理

来源:  [ 2007-3-8 22:18:45 ]  作者:佚名  编辑:
收藏到VIVI | 收藏到365KEY | 收藏到YOUNOTE | 收藏到博采| 收藏到天极网摘 | 收藏到和讯网摘
   svga彩色图形卡是一种超级vga卡,它不仅具有640×480×16色图像显示模式,而且具有640×480×256色图像显示模式。
microsoft c/c++7.0提供了丰富的图形库函数,尤其是提供了对svga卡所能设置的高分辨率图像模式的支持,利用丰富的图形库函数进行组合,就可以完成各种需要的功能。例如图像处理,动画编程,界面制作等。这一点对编程者来说无疑是十分方便的。
然而遗憾的是许多图形库函数在一些特定的显示模式(如-vers256color(0x0101)方式(640×480×256)等256色模式)下却无法正常工作,例如使用例程-getimage()和-putimage()时常会出现死机和不能正常工作(出现雪花或不进行任何操作)等现象。用-grstatus()函数检测调用函数的状态时,返回图形错误或警告信息,常见的有图形错误(-1)和不支持请求的视频方式(-2)等,而这些函数在vga下工作正常。
根据vesa图形标准,在图像模式下,svga的video buffer(视频缓冲区)是顺序的链结构,且图像数据是按行序顺序存放的,一个像素(屏幕上的一个点)用存储器的一个字节(256色)表示。视频存储器按字节连续寻址,与主机内存采用映射方式通讯,一次只能读写64kb的视频存储器,通过改变段偏移量(i/o操作)来寻址不同的段,即实现对全部视频存储器的操作。
同时,直接访问svga的寄存器进行读写操作,充分利用硬件的支持可以大大加快图形的处理速度。实践表明,其运行速度明显优于图形库中提供的函数(以-getimage()和-putimage()为例快30倍)。
笔者通过对视频存储器(video buffer)的直接访问实现了256色图像显示模式下图像块的读写功能。下面附上在vesa标准的0x0101(256)图像显示模式下-getimage()和-putimage()两个函数的源程序,该源程序是用microsoft c/c++7.0编写的。这两个函数在compaq 486及兼容机上运行通过。
-getimage()和-putimage()两个函数的参数类型说明及意义与microsoft c/c++7.0中相应函数的参数类型说明及意义相同。
/* 将图像存储到缓冲区中 */
void-getimage256(x1,y1,x2,y2,image)
short x1,y1,x2,y2;
char-huge *image;
{
char-far*buf,-huge *q;
long u;
short m,n,i,j,block;
m=abs(x2-x1)+1;
n=abs(y2-y1)+1;
(short)*image=m;
(short)*(image+2)=n;/* 保留图像的高度与宽度 */
q=image+4;
u=min(x1,x2);
u+=min(y1,y2) * 640l;
block=(short)(u/65536l);
u-=block*65536l;/* 计算偏移量 */
-fp-seg(buf)=0xa000;
-fp-off(buf)=u;
-outp(0x3c4,14),
-outp(0x3c5,block^2);/* 设置页寄存器 */
for (i=0; i<n; i++, q+=m) {/* 行循环 */
-memcpy(q, buf, m);
u+=640;
if(u<65536l) buf+=640;
else {/* 当一行不在同一段时 */
u-=65536l;
-fp-seg(buf)=0xa000;
-fp-off(buf)=0;
block++;
-outp(0x3c4,14);
-outp(0x3c5,block^2);
if(m>640-u)-memcpy(q+640-u,buf,(size-t)(m-640+u));
-fp-off(buf)=u;
}
}
}
/* 在缓冲区中搜索图像 */
void-putimage256(x,y,image,action)
short x,y,action;/* 参数action表示图像写方式 */
char-huge * image;
{
char-far *buf,-huge*q;
long u;
short m, n, j, i, block, mm;
-memcpy(&mm, image, 2);
if ((x+mm)>640) m=640-x;
else m=mm;
-memcpy(&n, image+2, 2);
if (y+n>480) n=480-n;/* 取图像的高度和宽度,并进行边界处理 */
q=image+4;
u=x;
u+=y*640l;
block=(short) (u/65536l);
u-=block*65536l;
-fp-seg(buf)=0xa000;
-fp-off(buf)=u;
-outp(0x3c4, 14);
-outp(0x3c5, block^2);
for (i=0; i<n; i++,q+=mm) {
if (action==-gpset) -memcpy(buf, q, m);
else if(action==-gor)for (j=0;j<m; j++) * (buf+j)|=(*(q+j));
else if(action==-gand)for (j=0;j<m; j++) * (buf+j)&=(* (q+j));
else if(action==-gxor)for (j=0;j<m; j++) * (buf+j)^=(* (q+j));
else if(action==-gpreset)for (j=0;j<m; j++) * (buf+j)=~(* (q+j));
u+=640;
if(u<65536l) buf+=640;
else {
u-=65536l;

本论文共2页,当前在第1页  1  2  

论文首页】【设为主页】【字体: 加入收藏】【打印本文】【回到顶部
 
上篇文章: 图形化开发平台在虚拟仪器中的应用  下篇文章: NetWare与UNIX的互联方法与实现
网站首页 - 友情链接 - 网站地图 - 加入收藏

声明:中国论文网毕业论文资料来源于网络,如有侵犯您的权益,请立即告知,我们将删除!
联系方式: E-mail:Laozhanga@QQ.COM QQ:75931341
喜欢WitkeyCity.Com,请把WitkeyCity.Com告诉你QQ上的5位好友,多谢支持!
冀ICP备07000828号