- 注册时间
- 2005-6-25
- 最后登录
- 1970-1-1
|
发表于 2006-11-27 13:15:59
|
显示全部楼层
演示一下SetBuf的强大功能~- void main(){
- char pic[3200];
- char pic2[3200];
- char fp;
- fp=fopen("/pic.bin","r"):
- fread(pic,1,3200,fp);
- SetBuf(pic);//系统把从pic开始的3200字节直接当作缓冲区(这里数组长为3200,实际上系统不检查),Refresh时将该数组的图片数据写入显存显示
- Refresh();
- getchar();
- fread(pic2,1,3200,fp);
- fclose(fp);
- SetBuf(pic2);
- Refresh();//显示的是pic2的图形数据
- getchar();
- SetBuf(pic+1);
- Refresh();//显示图片发生侧移,这里只是演示SetBuf函数只是取缓冲区首地址,并不管它是不是数组(即不做越界检查)
- getchar();
- memcpy(pic,pic2,1600);//虽然被定义为缓冲区,但是数组仍是数组,还是可以进行各项操作。
- SetBuf(pic2);
- GetBlock(0,0,160,40,0,pic);这两句和memcpy句结果相同,演示这种方法的灵活性。从某种程度上来说,这样甚至不需要BitBlt函数了。
- }
复制代码 LavaX3.5.1有一点Bug,单色时GetBlock是忽略低3位,16灰时应该只忽略低1位才对,可是还是忽略了低三位。希望4灰度Lava可以改过来。 |
|