请问我用LoadImage API从硬盘上加载了一个BMP图像,得到了该位图的句柄,请问用什么API能把他显示到Form1上呢?谢谢!

解决方案 »

  1.   

    不行!bitblt要求源的hDC,可只有该位图的句柄,而且不能够根据该句柄创建兼容的DC!
      

  2.   

    大体上是哦这个样子吧
    CDC         dcMem;
    CBitmap     bmpTemp;
    CBitmap     *pbmpTemp;
    dcMem.CreateCompatibleDC (pdc);bmpTemp.Attach (hbmp);
    pbmpTemp = dcMem.SelectObject (&m_bitmap);
    pdc->BitBlt( x1,y1,Width1,Hight1,&temppDc,0,0,SRCCOPY);
    dcMem.SelectObject (pbmpTemp);
    bmpTemp.Detach ()
      

  3.   

    没有dc你向哪上画呀?得有dc的
      

  4.   

    : maoxianwang(大大㊣BETAⅡ我想赶快结婚那样就可
    你瞎说什么那?什么没DC啊?我是说该位图本身没DC,所以不应用BitBlt,又没说目标设备没DC!: Panr(光荣) 
    不行啊,我想要API的方法,那还是VC自身的方法啊!
      

  5.   

    搂主看来是不太懂哦,只有有了DC才可以画出来,DC不是位图带有的,(位图怎么能代有DC呢)所有的DC都是根据窗口得来的你可以用GetDc(hwnd)从窗口句并来获得DC,这是画出来的前提啊,否则,我也没办法了
      

  6.   

    没DC,得到不就行了.CDC* pDC=GetDC()
      

  7.   

    HBITMAP hbmp = LoadImage(...);
    HDC hdc;
    hdc = GetDC(hwnd); //窗体总是有的吧
    HDC hmemdc;
    hmemdc = CreateCompatibleDC(hdc);
    HBITMAP holdbmp = (HBITMAP)SelectObject(hmemdc, hbmp);
    BitBlt(hdc, 0, 0, width, height, hmemdc, 0, 0, SRCCOPY);
    SelectObject(hmemdc, holdbmp);
    DeleteDC(hmemdc);
    DeleteObject(hbmp);
    ReleaseDC(hwnd);
      

  8.   

    : AthlonxpX86(一滴水) 
    我的意思就是如此,位图怎么会有DC呢,但目标窗体有DC呀!我问的就是如何把这个位图显示到目标(窗体)DC中,没有发现有函数能复制这个不存在于某个DC中的位图啊!
    而: triggerd(随风而行) 
    说的也不行,从位图得不到DC
     Mackz(在相互) 
    说的算是像是可行,但可惜的是,SelectObject不能用在LoadImage返回来的位图上!关键就不行在这了!
      

  9.   

    Mackz(在相互) 
    说的算是像是可行,但可惜的是,SelectObject不能用在LoadImage返回来的位图上!关键就不行在这了为什么不行?试了吗?也许要考虑是不是有效的句柄。
      

  10.   

    是有效句柄,试了,不行,后来发现MSDN上就说了LoadImage不在SelectObject所支持的范围之内!
      

  11.   

    试试
    HBITMAP hImage = NULL;
    hImage = (HBITMAP) LoadImage
    ( AfxGetInstanceHandle(),..//..//*.bmp,IMAGE_BITMAP,0,0,  LR_LOADFROMFILE );
    if ( !hImage )
    {
    AfxMessageBox("Failed to load image.");
    //UpdateButtonState();
    return;
    } // Hook image to picture control.
    m_picture.SetBitmap( hImage );
      

  12.   

    HBITMAP hbmp = (HBITMAP)::LoadImage(NULL, m_Original, IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION |LR_LOADFROMFILE);
        m_OriBitmap1.SetBitmap(hbmp);//m_OriBitmap1为picture
    UpdateData(FALSE);