当前位置:编程学习 > VC++ >>

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

自己导入一个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); }
补充:请各位大牛帮忙看下,谢谢!
答案: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); 
}
其他:由于我们将通知窗体的标题栏隐藏了,所以对窗体拖动操作还需要我们自己动手进行处理。本文介绍了如何更加高效的进行拖动窗体操作,有些网友在对于非标题栏拖动 将onerasebkgnd函数返回TURE试试

上一个:新电脑上VC6.0问题
下一个:VC中主进程创建子进程问题?

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,