游戏开发论坛

 找回密码
 立即注册
搜索
楼主: snakelp

怎样读取资源包内图片到DDRAW表面?

[复制链接]

22

主题

128

帖子

134

积分

注册会员

Rank: 2

积分
134
 楼主| 发表于 2007-4-18 22:51:00 | 显示全部楼层

Re:怎样读取资源包内图片到DDRAW表面?

问题又来了,当文件小于1078B的时候怎么正确读取?最后一个问题了

32

主题

1583

帖子

1589

积分

金牌会员

Rank: 6Rank: 6

积分
1589
发表于 2007-4-19 17:07:00 | 显示全部楼层

Re:怎样读取资源包内图片到DDRAW表面?

可以正确读取啊?

如果使用16位以上的BMP文件,可以直接读取。

如果使用256色调色板BMP文件,则文件根本不可能小于1078B。

如果使用16色调色板BMP文件,也可以直接读取。

你用的哪种BMP文件?

22

主题

128

帖子

134

积分

注册会员

Rank: 2

积分
134
 楼主| 发表于 2007-4-19 19:53:00 | 显示全部楼层

Re:怎样读取资源包内图片到DDRAW表面?

用WINDOWS画图版保存的256色文件确实不会小于1078B,但用PS保存的就会很小。我又发现,在载入某些图片时会发生图片偏移现象。

22

主题

128

帖子

134

积分

注册会员

Rank: 2

积分
134
 楼主| 发表于 2007-4-19 20:04:00 | 显示全部楼层

Re:怎样读取资源包内图片到DDRAW表面?

我的图基本上都是用PS保存的,能够处理的有的会出现图象偏移,有的就正常。有时候还是无故退出,也不报错,开发环境直接崩溃,是不是和PS保存的特殊格式有关?但为什么有的就正常?很郁闷

22

主题

128

帖子

134

积分

注册会员

Rank: 2

积分
134
 楼主| 发表于 2007-4-19 20:11:00 | 显示全部楼层

Re:怎样读取资源包内图片到DDRAW表面?

不管怎样还是非常感谢您,我代表游戏的所有玩家感谢您。游戏最后的测试也进行的差不多了,就差DDRAW部分的资源读取问题了。

32

主题

1583

帖子

1589

积分

金牌会员

Rank: 6Rank: 6

积分
1589
发表于 2007-4-20 14:23:00 | 显示全部楼层

Re:怎样读取资源包内图片到DDRAW表面?

PS如果要保存成256色位图的话也是不会小于1078B的。

但是PS往往会在保存时做一些优化,使用一些非标准的BMP格式,这会造成那个程序无法读取。

比如你说的PS保存的“很小”的BMP,它很有可能只是使用了十几种颜色,那么程序按照256色来读取肯定会出错的。

32

主题

1583

帖子

1589

积分

金牌会员

Rank: 6Rank: 6

积分
1589
发表于 2007-4-20 14:27:00 | 显示全部楼层

Re:怎样读取资源包内图片到DDRAW表面?

其实如果你了解一下GDI和DIB,将那些代码稍微修改一下就可以读取了,很容易的。

32

主题

1583

帖子

1589

积分

金牌会员

Rank: 6Rank: 6

积分
1589
发表于 2007-4-20 14:54:00 | 显示全部楼层

Re: Re:怎样读取资源包内图片到DDRAW表面?

snakelp: Re:怎样读取资源包内图片到DDRAW表面?

我的图基本上都是用PS保存的,能够处理的有的会出现图象偏移,有的就正常。有时候还是无故退出,也不报错,开发环境直接崩溃,是不是和PS保存的特殊格式有关?但为什么有的就正常?很郁闷


嗯,BMP文件结构有非常多种,采用PS保存的话可能会使用很多比较特殊的结构,我发的程序是标准未压缩BMP,支持32位、24位、16位、8位、4位BMP,不支持多平面,不支持位遮罩(比如是16位时的颜色格式必须时X1R5G5B5),也不支持更高版本(比如V4、V5)。

32

主题

1583

帖子

1589

积分

金牌会员

Rank: 6Rank: 6

积分
1589
发表于 2007-4-20 15:28:00 | 显示全部楼层

Re: 怎样读取资源包内图片到DDRAW表面?

唉算了,再做一次好人吧,呵呵 [em8]

这次可以实现读取非常规调色板颜色数量的BMP了,很多PS保存的带调色板的图片都是这样的。

(对于调色板BMP图片,PS保存时有时会计算实际用到的颜色数量,比如一幅256色调色板位图其中只用到了10种颜色,那么PS在保存的时候就只保存10色调色板,把它当作标准的256色调色板读取肯定会出错了)

另外这个新的代码中又多了一个函数,LoadDataToDC1和LoadDataToDC2,都可以实现读取,第一个可以读取BMP的详细信息,第二个的兼容性则更好些,用哪个自己挑。

sf_2007420152746.rar

5.76 KB, 下载次数:

22

主题

128

帖子

134

积分

注册会员

Rank: 2

积分
134
 楼主| 发表于 2007-4-22 13:13:00 | 显示全部楼层

Re:怎样读取资源包内图片到DDRAW表面?

太感谢了,第二个函数不能用啊。
这样大多数用PS保存的图片都可以读取了,但是64*64,或128*128,这样的位图还是不能读取,会退出。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-26 17:01

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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