游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3273|回复: 6

求助.关于如何创建HBITMAP.

[复制链接]

21

主题

112

帖子

112

积分

注册会员

Rank: 2

积分
112
发表于 2005-12-14 22:12:00 | 显示全部楼层 |阅读模式
VC.Net 2003 下:
    LPDIRECTDRAWSURFACE7 lpDDSPri;
    LPDIRECTDRAWSURFACE7 lpDDSBuf;
    HBITMAP bmpGreen;
    HDC hdcGreen;
    RECT rect={0,0,100,100};
    .
    .
    .
    bmpGreen=CreateBitmap(100,100,1,24,NULL);
    hdcGreen=CreateCompatibleDC(NULL);
    SelectObject(hdcGreen,bmpGreen);
    HBRUSH brushGreen=CreateSolidBrush(RGB(0,255,0));
    FillRect(hdcGreen,&rectGreen,brushGreen);
    .
    .
    .
    HDC hdc;
    lpDDSBuf->GetDC(&hdc);
    StretchBlt(hdc,100,100,100,100,hdcGreen,0,0,100,100,SRCCOPY);
    lpDDSBuf->ReleaseDC(hdc);
    lpDDSPri->Flip(NULL,DDFLIP_WAIT);

    编译通过,没有问题.DDRAW等初始化也没任何问题.但运行结果是lpDDSBuf没有画上任何问题.怀疑是我CreateBitmap上的使用问题.但实在找不出办法.用LoadImage导入BMP文件可以绘制成功.请哪位能帮帮忙.THANK YOU !!!


21

主题

112

帖子

112

积分

注册会员

Rank: 2

积分
112
 楼主| 发表于 2005-12-16 12:36:00 | 显示全部楼层

Re: 求助.关于如何创建HBITMAP.

没人能帮忙吗?

7

主题

29

帖子

29

积分

注册会员

Rank: 2

积分
29
QQ
发表于 2005-12-16 13:42:00 | 显示全部楼层

Re:求助.关于如何创建HBITMAP.

bmpGreen和hdcGreen不兼容
这样创建:
hdcGreen=CreateCompatibleDC(NULL);
bmpGreen = CreateCompatibleBitmap(hdcGreen,100,100);
SelectObject(hdcGreen,bmpGreen);

21

主题

112

帖子

112

积分

注册会员

Rank: 2

积分
112
 楼主| 发表于 2005-12-16 21:15:00 | 显示全部楼层

Re:求助.关于如何创建HBITMAP.

等了两天,终于有人回答我了.谢谢!!!
还有一个问题,发现VS.NET中rand()函数每次随机出来的数字都是一样的啊.
这是为什么?那应该怎样得到随机数啊.总不至于每次都取系统时间吧?
再次谢谢!!!

21

主题

112

帖子

112

积分

注册会员

Rank: 2

积分
112
 楼主| 发表于 2005-12-16 21:42:00 | 显示全部楼层

Re:求助.关于如何创建HBITMAP.

另,试了楼上朋友的方法,果然可行.但是似乎这样建立的HBITMAP是1位单色的?
应该怎么做?
新人,请前辈们多多指点

21

主题

112

帖子

112

积分

注册会员

Rank: 2

积分
112
 楼主| 发表于 2005-12-17 16:41:00 | 显示全部楼层

Re:求助.关于如何创建HBITMAP.

请多多帮助新人啊

7

主题

29

帖子

29

积分

注册会员

Rank: 2

积分
29
QQ
发表于 2006-1-23 12:21:00 | 显示全部楼层

Re:求助.关于如何创建HBITMAP.

1)每次用srand()初始化过之后,随机序列就生成死了,以后随便怎么用rand()都只是从这个序列中拿数字而已,当然会一样了,所以每次rand()之前都要srand一下,不过这样也只能做到近似随机,绝对随机计算机好像模拟不出来的,你可以在Google搜搜,这方面好像专门有人在研究的.
2)如果要创建彩色位图,必须先取得窗口DC,然后创建一个跟这个窗口DC兼容内存DC和位图.
HDC wndDC = GetDC(hWnd);
hdcGreen=CreateCompatibleDC(wndDC );
bmpGreen = CreateCompatibleBitmap(wndDC ,100,100);
SelectObject(hdcGreen,bmpGreen);
ReleaseDC(wndDC);
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-23 08:00

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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