请问我用LoadImage API从硬盘上加载了一个BMP图像,得到了该位图的句柄,请问用什么API能把他显示到Form1上呢? 请问我用LoadImage API从硬盘上加载了一个BMP图像,得到了该位图的句柄,请问用什么API能把他显示到Form1上呢?谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不行!bitblt要求源的hDC,可只有该位图的句柄,而且不能够根据该句柄创建兼容的DC! 大体上是哦这个样子吧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 () 没有dc你向哪上画呀?得有dc的 : maoxianwang(大大㊣BETAⅡ我想赶快结婚那样就可你瞎说什么那?什么没DC啊?我是说该位图本身没DC,所以不应用BitBlt,又没说目标设备没DC!: Panr(光荣) 不行啊,我想要API的方法,那还是VC自身的方法啊! 搂主看来是不太懂哦,只有有了DC才可以画出来,DC不是位图带有的,(位图怎么能代有DC呢)所有的DC都是根据窗口得来的你可以用GetDc(hwnd)从窗口句并来获得DC,这是画出来的前提啊,否则,我也没办法了 没DC,得到不就行了.CDC* pDC=GetDC() 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); : AthlonxpX86(一滴水) 我的意思就是如此,位图怎么会有DC呢,但目标窗体有DC呀!我问的就是如何把这个位图显示到目标(窗体)DC中,没有发现有函数能复制这个不存在于某个DC中的位图啊!而: triggerd(随风而行) 说的也不行,从位图得不到DC Mackz(在相互) 说的算是像是可行,但可惜的是,SelectObject不能用在LoadImage返回来的位图上!关键就不行在这了! Mackz(在相互) 说的算是像是可行,但可惜的是,SelectObject不能用在LoadImage返回来的位图上!关键就不行在这了为什么不行?试了吗?也许要考虑是不是有效的句柄。 是有效句柄,试了,不行,后来发现MSDN上就说了LoadImage不在SelectObject所支持的范围之内! 试试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 ); HBITMAP hbmp = (HBITMAP)::LoadImage(NULL, m_Original, IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION |LR_LOADFROMFILE); m_OriBitmap1.SetBitmap(hbmp);//m_OriBitmap1为picture UpdateData(FALSE); if(p)还是if(p != NULL) 哪位大侠能帮我详细解释一下这段代码啊 1、VC中如何实现气泡提示框; 2、如何实现如“金山词霸”那样的提示框 请教大牛一个关于线程画图的问题 求教关于ADO数据库的问题,怎样判断表是否应经打开 MFC中CSocket与多线程----我的程序错在哪里啊? 打包软件的用法? 为什么手工添加的类 在classwizard里看不到呢? 虚拟服务器的问题!大家帮帮我啊! 关于COM里面的USES_CONVERSION什么意思啊 有没有办法可以得到WinLogon进程为登路用户所创建的访问令牌呢 函数前面加上static 有什么作用呢?
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 ()
你瞎说什么那?什么没DC啊?我是说该位图本身没DC,所以不应用BitBlt,又没说目标设备没DC!: Panr(光荣)
不行啊,我想要API的方法,那还是VC自身的方法啊!
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);
我的意思就是如此,位图怎么会有DC呢,但目标窗体有DC呀!我问的就是如何把这个位图显示到目标(窗体)DC中,没有发现有函数能复制这个不存在于某个DC中的位图啊!
而: triggerd(随风而行)
说的也不行,从位图得不到DC
Mackz(在相互)
说的算是像是可行,但可惜的是,SelectObject不能用在LoadImage返回来的位图上!关键就不行在这了!
说的算是像是可行,但可惜的是,SelectObject不能用在LoadImage返回来的位图上!关键就不行在这了为什么不行?试了吗?也许要考虑是不是有效的句柄。
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 );
m_OriBitmap1.SetBitmap(hbmp);//m_OriBitmap1为picture
UpdateData(FALSE);