游戏开发论坛

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

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

[复制链接]

32

主题

1583

帖子

1589

积分

金牌会员

Rank: 6Rank: 6

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

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

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

太感谢了,第二个函数不能用啊。
这样大多数用PS保存的图片都可以读取了,但是64*64,或128*128,这样的位图还是不能读取,会退出。


第二个函数和第一个有一定区别的,它需要提供一个diOffBits参数,而且不能获取图像大小信息。


你干脆把不能用的图片传上来算了,我帮你看看到底是什么格式的。

22

主题

128

帖子

134

积分

注册会员

Rank: 2

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

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

您看看吧,还有,代码的稳定性还是有问题,有时候读取图片后会导致程序出现各种各样的错误,比如窗口变色、莫名其妙的内存溢出等。估计还是位图格式读取不正确,然后使用 CopyMemory 函数搞的。

图象的尺寸是一定要得到的,不然没法给DDSURFACEDESC2指定尺寸

再次感谢,您费心了,我忙着扩展游戏地图和任务,争取5月1日发布它,D3D模式已经测试完了。

sf_200742221925.rar

1.9 KB, 下载次数:

32

主题

1583

帖子

1589

积分

金牌会员

Rank: 6Rank: 6

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

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

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

您看看吧,还有,代码的稳定性还是有问题,有时候读取图片后会导致程序出现各种各样的错误,比如窗口变色、...


嗯,其实只要涉及到内存拷贝,VB的IDE就不足以保证稳定性。其实VC++也是一样的,你看很多C++的程序在对指针或数组进行调试的时候就崩掉了,只是他们已经习惯了,而使用VB的人还不习惯这种相对“可怕”的错误。

不过要想突破限制使用VB,让它做一些厉害的事情,这些都是不可避免的。所以养成好习惯吧,每次调试前先保存,和C++的程序员一样,呵呵。


至于你的问题,我看了,那是你BMP文件的问题了。

真正64×64的256色图像,数据区占内存大小应该为64×64×1=4096字节,而你的那个BMP文件却是4098字节,额外多出两个没用的字节,进行内存拷贝的时候肯定就会越界导致“内存访问错误”啦。

你可以试试,将你的那个BMP文件用MSPaint打开,然后调整大小到64×65,保存,然后再调整回来,保存,你看看大小,是不是和原来相比少了两个字节?

这下就可以正常读取了。

你看看这个附件,图片和你发的那个完全一样,但是少两个字节可以正常读取。
[em13]

sf_2007423172729.rar

1.9 KB, 下载次数:

22

主题

128

帖子

134

积分

注册会员

Rank: 2

积分
134
 楼主| 发表于 2007-4-23 21:08:00 | 显示全部楼层

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

那些出问题的图片我就是这么处理的,其它的一些图片也是这种格式的,但是能正常读取。不过就是不知道什么时候就来点莫名其妙的错误。图片数量太多了,一个个都那么改我受不了啊
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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