易码技术论坛

 找回密码
 加入易码
搜索
查看: 226611|回复: 12

BMP图片的恼人问题

[复制链接]
发表于 2005-8-19 14:18:00 | 显示全部楼层
没办法,bmp格式设计不合理,当初不知道为什么这么定.
 楼主| 发表于 2005-8-19 23:08:00 | 显示全部楼层
因为要从WritePic()函数改的话,先读取数据再"反转180度"数据,再转成反色,影响速度
当然还有一个原因,我这人很懒,有时恨不得定义函数都用a,b,c,d,e,f什么的[em01]
~~~~~
发表于 2005-8-19 14:04:00 | 显示全部楼层
上下反了吧.
bmp就是先存最下面一行的.
 楼主| 发表于 2005-8-19 14:16:00 | 显示全部楼层
看来真的是没什么好办法了,嗨,
我又要从头到尾重改引擎了
发表于 2005-8-19 14:22:00 | 显示全部楼层
你可以改那个WritePic函数啊。反过来读不就可以了么?
发表于 2005-8-19 14:24:00 | 显示全部楼层
bmp设计不合理啊.一般LCD的显示数据都是由上到下,而bmp却是由下到上.
 楼主| 发表于 2005-8-19 18:17:00 | 显示全部楼层
唉呀呀,是我SB拉,一时没想通,
其实把要用的图片先反转180度,再反显,保存就能正常使用拉
[em04][em04][em04]
发表于 2005-8-19 18:22:00 | 显示全部楼层
用画图的垂直翻转,不要用旋转180度
 楼主| 发表于 2005-8-19 18:29:00 | 显示全部楼层
记得WriteBlock()没有翻转功能,但XDraw可以全屏翻转
我用的图片都是55*80、16*16、160*36什么的,不能用XDraw全屏翻转来用
其实我是想先把图片翻转和反色先做好,保存成BMP,在调用图片时就不必做多余操作来浪费时间
发表于 2005-8-19 19:02:00 | 显示全部楼层
我是想问一下,为什么不能改你自己的Lava函数WritePic呢?
发表于 2005-9-5 23:41:00 | 显示全部楼层
你不会把图片在电脑上反一下!
发表于 2005-9-5 23:42:00 | 显示全部楼层
问下,你的这个引擎可以用在很多软件上
以及类似心跳回忆的游戏,前途无量!!!!!!!
继续加油哦
 楼主| 发表于 2005-8-19 13:59:55 | 显示全部楼层 |阅读模式
我原先构思并设计的好好的游戏引擎,在其中加入
了一个在游戏中调用任意灰度BMP图片的函数,
可是恼人的BMP格式出来的效果却是这个
原图:

 
打开BMP文件读取数据,再显示就变成了这样:
 

 
源码:
char MMdir[]="/LavaData/MetalMax";
void WritePic(int x,int y,int width,int height,int type,addr name)
{
char fp;
char pic_name[256];
long pic_msg[2];
char pic_data[160*80/2];
strcpy(pic_name,MMdir);
strcat(pic_name,"/");
strcat(pic_name,name);
if((fp=fopen(pic_name,"r"))==0){printf("打开%s失败!",name);exit(0);}
fseek(fp,0x12,0);
fread(pic_msg,1,4,fp);
if(pic_msg[0]!=width&&pic_msg[1]!=height){printf("图片%s大小有误!",name);getchar();}
fseek(fp,0x76,0);
fread(pic_data,1,width*height/2,fp);
WriteBlock(x,y,width,height,type|0x8,pic_data);
fclose(fp);
}
void main()
{
SetGraphMode(4);
WritePic(0,0,160,80,0x41,"MM.bmp");
getchar();
}
汗啊!
不知是我方法错了还是怎么的,如果这个不行,那我只能把BMP的事先做成dat文件再用,
这到底是什么问题啊????????
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2024-4-30 23:10 , Processed in 0.012252 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表