求教VC++高手,如何将自己导入的bitmap显示

自己导入一个IDB_PICTURE显示不了。其他部分没问题,就是绘图出现问题。请教高手解答,万分感激。在CGAMEWND中定义了:RECTm_rcClient;CBrus... 自己导入一个IDB_PICTURE显示不了。其他部分没问题,就是绘图出现问题。请教高手解答,万分感激。
在CGAMEWND中定义了:
RECT m_rcClient;
CBrush m_brsBG;
在类初始化中,
CGameWnd::CGameWnd()
{
m_bmp.LoadBitmap(IDB_PICTURE);
m_brsBG.CreateSolidBrush(COLOR_BLACK);
}

绘图函数:
void CGameWnd::OnPaint()
{
CPaintDC dc(this); // device context for painting
CDC dcMemory; // 内存设备

CBitmap bitmap;
CRect m_rcClient;
GetWindowRect(&m_rcClient);
// 与dc设备兼容
dcMemory.CreateCompatibleDC(&dc);

// 使得bitmap与实际显示的设备兼容
bitmap.CreateCompatibleBitmap(&dc, m_rcClient.Width(),m_rcClient.Height());
// 内存设备选择物件-位图
dcMemory.SelectObject(&bitmap);
//绘制背景框
dcMemory.FillRect(&m_rcClient, &m_brsBG);

//DrawWall((CPaintDC&) dcMemory);

for (int i = 0; i<M_NUM_HEIGHT; i++)
{
for (int j = 0; j<M_NUM_WIDTH; j++)
{
switch(m_cMap[i][j])
{
case MAP_WALL:
DrawWall((CPaintDC&) dcMemory, i, j);
}
}
}
// 将内存设备的内容拷贝到实际屏幕显示的设备
dc.BitBlt(0, 0, m_rcClient.Width(),m_rcClient.Height(), &dcMemory, 0, 0, SRCCOPY);
bitmap.DeleteObject();

}

void CGameWnd::DrawWall(CPaintDC &dc, int j , int i )
{
CDC dcMemory; //用作内存设备
dcMemory.SelectObject(m_bmp); //将内存设备与位图资源关联
dcMemory.CreateCompatibleDC(&dc); //使得这个设备与dc兼容
dc.StretchBlt(32*j, 32*i, 32, 32, &dcMemory, 0, 0, 32, 32, SRCCOPY);
}
请各位大牛帮忙看下,谢谢!
展开
 我来答
0700710110
2011-08-18 · 超过25用户采纳过TA的回答
知道答主
回答量:71
采纳率:0%
帮助的人:66.5万
展开全部
1.把你的图包含到程序的“Bitmap资源”里,会有提示,主要是说该资源使用了大于256色的调色板,在VC里无法编辑等等,你确定就行

2.定位到 OnPaint(),在if()...else()中的else()下添加如下代码
else
{
//CDialog::OnPaint();//注意要禁止这个调用
CPaintDC dc(this);
CRect rect;
GetClientRect(&rect);
CDC dcMem;
dcMem.CreateCompatibleDC(&dc);
CBitmap bmpBackground;
bmpBackground.LoadBitmap(IDB_BITMAP);
//IDB_BITMAP是你自己的图对应的ID
BITMAP bitmap;
bmpBackground.GetBitmap(&bitmap);
CBitmap *pbmpOld=dcMem.SelectObject(&bmpBackground);
dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,
bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chashion
2011-08-14 · TA获得超过224个赞
知道小有建树答主
回答量:175
采纳率:0%
帮助的人:151万
展开全部
将onerasebkgnd函数返回TURE试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
haomen02
2011-08-13 · 超过12用户采纳过TA的回答
知道答主
回答量:253
采纳率:100%
帮助的人:163万
展开全部
由于我们将通知窗体的标题栏隐藏了,所以对窗体拖动操作还需要我们自己动手进行处理。本文介绍了如何更加高效的进行拖动窗体操作,有些网友在对于非标题栏拖动
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式