| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1820 人关注过本帖
标题:800X600X256 虚拟缓冲区送显示缓冲区的困惑
只看楼主 加入收藏
ba_wang_mao
Rank: 2
来 自:成都理工大学
等 级:论坛游民
帖 子:297
专家分:27
注 册:2006-11-7
收藏
得分:0 
一笔苍穹:
1、我必须要在DOS下用TC++编程,由于要画实时曲线,因此希望将画的中间过程全部(以前画的线全部清除,当前时刻重新画线)在虚拟屏上做,最后显示屏上显示的是最终结果。
  看来,只能用XMS存储虚拟屏幕内容了。XMS方面的编程我参照你的NEO程序已经完全调试成功(汉字库HZK16就是调入XMS内存中)但是,如果将虚拟屏内容送到物理屏幕
我摸不着边际,请求一笔苍穹帮忙,  
  如果每次往物理屏幕送1行=800个像素,采用movedata()函数,中间进行换页,该如何处理?
for (int i=0;i<600;i++)
movedata(source_seg,source_off,dest_seg,dest_off,800);
 2、如何显示一个红色的底色白色的字呢(红底白字),图形模式有前景色及背景色的概念吗?

多年以来还在MSDOS、单片机下搞嵌入式编程,对WINDOWS编程一窍不通,很想了解WINDOWS下病毒编程技术。
2006-11-10 14:58
一笔苍穹
Rank: 1
等 级:新手上路
帖 子:640
专家分:0
注 册:2006-5-25
收藏
得分:0 
第一行有800个像素,显存中的一页一般为64K,在8位色深模式下,即可存储0xffff(65535)个像素,然后做一个很简单的数学运算:扫描线的像素偏移除以64K,整数部分就是这一行所在的页码了,假如你要拷贝第一行扫描线,它位于第就是800 / 64K,它在第0页,如果你要拷贝的是第400行,就是800*400/65536=4,那就是要换到第四号页了。至于换完页后第400行的最末一个像素在4#显存页中对应哪个地址呢(即偏移量)?你可以用800*400%65536算得。
不过你要是用XMS的话,movedata()有可能被优化掉,你边做边看吧。
2006-11-10 15:44
ba_wang_mao
Rank: 2
来 自:成都理工大学
等 级:论坛游民
帖 子:297
专家分:27
注 册:2006-11-7
收藏
得分:0 
太感谢一笔苍穹了。
不知你的GUI设计的怎么样了,我觉得要想在DOS下设计出《WINDOWS经典界面》开始菜单上的“白色”都比较困难,还有窗口上的标题条上的“过渡色”,不知如何设计,主要是对设色板无概念。

多年以来还在MSDOS、单片机下搞嵌入式编程,对WINDOWS编程一窍不通,很想了解WINDOWS下病毒编程技术。
2006-11-10 16:16
一笔苍穹
Rank: 1
等 级:新手上路
帖 子:640
专家分:0
注 册:2006-5-25
收藏
得分:0 

现在没时间做这些东西了,NEO的维护也几近停滞,只能说争取今年能再发布一个正式版吧,GUI那块可能还是空缺,所以要让你失望了。
要在256色做外观比较漂亮的GUI是极有挑战力的,在高、真彩下做就好弄些。在256色模式下要考虑的东西较多,归结下来其它还是调色板的问题,要做一个覆盖面齐全的调色板不是件容易事,为了显示其它各种图片,还要有比较好的抖动函数,NEO库里的那个还不行,总之加油吧。

2006-11-10 16:51
快速回复:800X600X256 虚拟缓冲区送显示缓冲区的困惑
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029935 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved