游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3649|回复: 10

加载BMP图片到表面时的问题,搞不定了

[复制链接]

9

主题

48

帖子

53

积分

注册会员

Rank: 2

积分
53
QQ
发表于 2005-2-3 13:25:00 | 显示全部楼层 |阅读模式
640*480*8模式,把图片(100*100*256)显示在屏幕左上角。为什么显出来总是乱七八糟的颜色,而且还非法操作?大虾们帮忙看看有什么问题没?
不用考虑效率什么的,就是验证一下算法

//BMP的数据信息已经读到image_buffer里了。
//Lock主表面
screen_buffer = ddsd.lpSurface;
for(int i=0;i< bitmapinfoheader.biHeight;i++)
   for(int j=0;j< bitmapinfoheader.biWidth;j++)
         screen_buffer[i*ddsd.lPitch+j] = image_buffer[i*bitmapinfoheader.biWidth+j];

//Unlock

37

主题

727

帖子

740

积分

高级会员

Rank: 4

积分
740
发表于 2005-2-3 13:31:00 | 显示全部楼层

Re: 加载BMP图片到表面时的问题,搞不定了

你看看我写的这个小程序
有没帮助
没帮助别找我
我可是好心一番~

sf_200523133140.rar

176.81 KB, 下载次数:

26

主题

417

帖子

476

积分

中级会员

总版主

Rank: 3Rank: 3

积分
476
发表于 2005-2-3 13:40:00 | 显示全部楼层

Re:加载BMP图片到表面时的问题,搞不定了

1) 如果你是全屏幕方式的话,请检查你的调色板是否显示正确

2)如果你是Windowed 方式, 请检查你当前桌面的屏幕深度

9

主题

48

帖子

53

积分

注册会员

Rank: 2

积分
53
QQ
 楼主| 发表于 2005-2-3 13:50:00 | 显示全部楼层

Re:加载BMP图片到表面时的问题,搞不定了

to 只穿内裤:谢谢,不过好象跟我的问题没关系~~~~  $__$
to playerwing:我是全屏模式,调色板应该没问题吧。
我载入图片的代码:
int CBmp:oadPicture(const char *filename)
{
        HFILE hFile;
        if((hFile=_lopen(filename,OF_READ))==HFILE_ERROR)
                return (0);
       
        _lread(hFile,&bitmapfileheader,sizeof(BITMAPFILEHEADER));
        _lread(hFile,&bitmapinfoheader,sizeof(BITMAPINFOHEADER));
        _lread(hFile,&palette,MAX_COLOR*sizeof(PALETTEENTRY));

        int tmp;
        for(int i=0;i<MAX_COLOR;i++)
        {
                tmp                =              palette.peBlue;
                palette.peBlue        =        palette.peRed;
                palette.peRed        =        tmp;

                palette.peFlags        =        PC_NOCOLLAPSE;
        }

        const int SIZE = bitmapinfoheader.biSizeImage;
        _llseek(hFile,0-SIZE,SEEK_END);
        image_buffer = new UCHAR[SIZE];

        _lread(hFile,image_buffer,SIZE);

        _lclose(hFile);
        return (1);
}

9

主题

48

帖子

53

积分

注册会员

Rank: 2

积分
53
QQ
 楼主| 发表于 2005-2-3 14:40:00 | 显示全部楼层

Re:加载BMP图片到表面时的问题,搞不定了

没人理我了~~~~~
$_$
看起来都很简单,一编译什么问题都出来了~~~~~~哭啊。
找了好久都不知道哪里出问题了~~~~~

24

主题

229

帖子

229

积分

中级会员

Rank: 3Rank: 3

积分
229
发表于 2005-2-3 17:19:00 | 显示全部楼层

Re:加载BMP图片到表面时的问题,搞不定了

从算法上看好像没什么问题。

33

主题

128

帖子

128

积分

注册会员

Rank: 2

积分
128
发表于 2005-2-3 17:22:00 | 显示全部楼层

Re: 加载BMP图片到表面时的问题,搞不定了

LoadImage 函数不行吗?

9

主题

48

帖子

53

积分

注册会员

Rank: 2

积分
53
QQ
 楼主| 发表于 2005-2-3 19:11:00 | 显示全部楼层

Re:加载BMP图片到表面时的问题,搞不定了

难道真的是调色板错位了?
或者图片数据读错位了?
天哪~~~~~

37

主题

727

帖子

740

积分

高级会员

Rank: 4

积分
740
发表于 2005-2-3 22:50:00 | 显示全部楼层

Re:加载BMP图片到表面时的问题,搞不定了

用API应该行的
我试过....

63

主题

871

帖子

891

积分

高级会员

Rank: 4

积分
891
QQ
发表于 2005-2-4 17:31:00 | 显示全部楼层

Re:加载BMP图片到表面时的问题,搞不定了

是sizeof(BITMAPFILEHEADER)的问题

由于为了加快访问速度,,结构体里的成员一般都是4B对齐的

所以sizeof(BITMAPFILEHEADER)的大小比文件中的结构数据要大

所以会发生数据错位
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-24 06:49

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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