过路的大虾:
我想在客户区想添加一张图片。
我在视图的onDraw()中代码如下:
void CSDlutilView::OnDraw(CDC* pDC)
{
CBitmap Logo;
CDC dcDisplayMemory;
         Logo.LoadBitmap(IDB_LOGO);
dcDisplayMemory.CreateCompatibleDC(pDC);
         dcDisplayMemory.SelectObject(&Logo);
         pDC->BitBlt(0, 0, 1200, 600, &dcDisplayMemory, 0, 0,SRCCOPY);
}
如果我的IDB_LOGO是一个在Resource下的Bitmap中通过Insert New bitmap方法生成时,程序是能显示一个爆丑的图片的,但是如果IDB_LOGO是一个现成的图片(例如一张风景照片)就不能正常的Load进去。
为什么?
怎样才能实现呢?

解决方案 »

  1.   

    从文件中装载位图用LoadImage函数;资源中你看看颜色设成多少了。
      

  2.   

    to Mackz:
    怎么看资源中的颜色设成了多少?这是什么意思啊?
    谢谢啊.
      

  3.   


    更正:vc 创建资源文件里面的都是256色
    但你可以导入一个真彩位图。
    首先导入位图文件的方法需要注意:
    Insert》resorc>>import...>>选择所有文件,然后选择你要的24色bmp
    不过引入后会有提示,说不能用编辑器编辑。因为vc的编辑器是256色的
    我们就直接用这个图给ID起名字”IDB_BITMAP_24“不对位图进行编辑了。CBitmap* bmp=new CBitmap(); HBITMAP hbm = (HBITMAP)::LoadImage(AfxGetInstanceHandle(),
    MAKEINTRESOURCE(IDB_BITMAP_24), IMAGE_BITMAP, 0,0,
    LR_CREATEDIBSECTION | LR_LOADMAP3DCOLORS );
    bmp->Attach(hbm);
      

  4.   

    CDC *pDC=GetDC();
    CDC MemDC;
    CString str("c:\\abc.bmp");  
    HBITMAP hBitmap=(HBITMAP)LoadImage(NULL,str, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE|LR_CREATEDIBSECTION);
    CBitmap *pBitmap = new CBitmap; pBitmap->Attach(hBitmap);     MemDC.CreateCompatibleDC(pDC);  MemDC.SelectObject(pBitmap);
    pDC->BitBlt(0, 0,800, 800, &MemDC, 0, 0, SRCCOPY); 
    pBitmap->Detach();
    delete pBitmap;