游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2240|回复: 5

DirectDraw粘贴位图

[复制链接]

3

主题

15

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2008-5-2 13:00:00 | 显示全部楼层 |阅读模式
我自己开发了几个图形函数,其中常用的是:
MDDraw_CreateSurface(width,height)
MDDraw_LoadBitmap(lpdds,"test.bmp")

我创建了一个画面,指针是lpdds,为350X150大小,32位。位图"test.bmp"也是同样大小,24位。

结果,在图形变换时,却出现了错误,本应是"test.bmp"的地方,全都是灰色横线。

但是,我用这两个函数创建一个800X600,32位的画面,并粘贴一个同样大小,24位的位图,就成功了。可见函数并没有写错。

那为什么贴"test.bmp"时会出错呢?

是不是有的位图是“倒向”存储像素,而有点是“正向”存储的缘故呢???

86

主题

2251

帖子

2386

积分

金牌会员

Rank: 6Rank: 6

积分
2386
QQ
发表于 2008-5-2 13:21:00 | 显示全部楼层

Re:DirectDraw粘贴位图

不知道你怎么贴的,MDDraw_LoadBitmap是怎么写的。
还有最好发张图看看。
bmp倒向,并不会导致像素错位。

3

主题

15

帖子

15

积分

新手上路

Rank: 1

积分
15
 楼主| 发表于 2008-5-2 14:24:00 | 显示全部楼层

Re:DirectDraw粘贴位图

先谢谢一楼的朋友!

那个函数我是一个字节一个字节拷贝的。由于位图是24位,画面是32位,我还使用了一个宏补了8位ALPHA值。

这是宏:
#define _RGB32BIT(a,r,g,b) ((b) + ((g) << 8) + ((r) << 16) + ((a) << 24))

如果您想看加载位图函数的代码,您就说句,我整理一下就发上来。

3

主题

15

帖子

15

积分

新手上路

Rank: 1

积分
15
 楼主| 发表于 2008-5-2 14:51:00 | 显示全部楼层

Re:DirectDraw粘贴位图

如果想看截图,请大家访问我的百度空间:

http://hi.baidu.com/mypcluna

谢谢大家啦!!!

3

主题

15

帖子

15

积分

新手上路

Rank: 1

积分
15
 楼主| 发表于 2008-5-2 17:11:00 | 显示全部楼层

Re:DirectDraw粘贴位图

最新情况发现:

将位图大小调至400X300,粘贴就不会有问题。

350X150还是出错。
210X120也是出错。

100以内X100以内,正常。

我都快崩溃了,看来函数应该没写错的,怎么会这样???

3

主题

15

帖子

15

积分

新手上路

Rank: 1

积分
15
 楼主| 发表于 2008-5-2 17:26:00 | 显示全部楼层

Re:DirectDraw粘贴位图

最新调查显示:

位图349X150正常

350X150出错。
351X150出错。

352X150正常
353X150正常

越来越混乱了,到底是怎么回事?我的函数应该没写错吧!否则怎么会只改变位图的一个像素,就会由正常变成错误,或者由错误变为正常呢?

请问论坛里边有没有真正的高手啊?求求您帮我解答吧,我快崩溃了……
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-22 16:18

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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