高手请进:怎样把纯内存位图数据显示出来呢?用Bitblt(). BitBlt函数书写失误,应为BitBlt(dc.m_hDC,rect.left,rect.top,rect.right,rect.bottom,hMemDC,0,0,SRCCOPY); 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 换成这样试试: CBitmap bitmap; if( bitmap.CreateBitmap(nWidth,nHeight,1,24,pBmpBuff) ){ CRect rect; GetClientRect(&rect); CClientDC dc(this); HDC hMemDC = CreateCompatibleDC(dc.m_hDC); CBitmap* hOldBitmap; if(hMemDC!=NULL) hOldBitmap=(CBitmap *)SelectObject(hMemDC,&bitmap ); //备注:由于hOldBitmap返回NULL,绘图失败??BitBlt (dc.m_hDC,rect.left,rect.top,rect.right,rect.bottom,hMemDC,0,0,SRCCOPY); if (hOldBitmap!=NULL) SelectObject(hMemDC,hOldBitmap); if(hMemDC!=NULL) DeleteObject(hMemDC); bitmap.DeleteObject();} 纯位图数据(24 bits)~~~~~~~~~是什么数据,有没有FileHeader,有没有BMPInfoHeader没有InfoHeader的话,HBITMAP不能指向它有FileHeader的话,HBITMAP也不能指向它 纯位图数据没有包含 BITMAPINFOHEADER 和 BITMAPFILEHEADER。 纯位图数据没有包含 BITMAPINFOHEADER 和 BITMAPFILEHEADER。 用函数Setdibitstodevice或StretchDibits可以但要自己构造一个BITMAPINFOHEADER就可以了,很简单,查查MSDN,StretchDibits可以在画图像数据到DC上是进行缩放而Setdibitstodevice不可以。 StretchDIBits和SetDIBitsToDevice可以将指定的图像数据(不包括BITMAPINFOHEADER 和 BITMAPFILEHEADER)直接画到指定的DC上,前者可以缩放而后者只能1:1的进行。使用时要自己构造一个与图像数据对应的BITMAPINFOHEADER ,具体见MSDN,其实非常简单。 没有InfoHeader,那有没有 width, height, bpp等数据,没有的话就干不了 Sorry,没看到你已经建好了CBitmap你用不着 SelectObject()返回值hOldBitmap=(CBitmap *)SelectObject(hMemDC,&bitmap ); 因为你的 DC中原来没有 HBITMAP, 所以返回 NULL不要返回值,也别选回去该成:SelectObject(hMemDC,&bitmap ); BitBlt (dc.m_hDC,rect.left,rect.top,rect.right,rect.bottom,hMemDC,0,0,SRCCOPY); hai shi kan yi xia ba BCGCBPRO菜单栏和工具栏改变的一个简单方法 在CRichEditCtrl里,如果在图片上右键,选择另存为后,怎么把这个图片保存到本地bmp或者jpg等其他图片格式?? 高分悬赏!如何让 MFC 产生阴影效果。。和 动态位图按钮 MessageBox问题请教 delphi 中的SysErrorMessage函数在VC上怎样实现 WpCap 请大家提供一些VC好的学习网站 小女子初来乍到,求救 怎么把CString ss="0x3A,0x4A"转成BYTE MyByte[2]={0x3A,0x4A} FlexGrid控件能选中某一个单元格进行修改吗? SMTP的问题! 右键弹出菜单问题
if( bitmap.CreateBitmap(nWidth,nHeight,1,24,pBmpBuff) )
{ CRect rect;
GetClientRect(&rect);
CClientDC dc(this);
HDC hMemDC = CreateCompatibleDC(dc.m_hDC);
CBitmap* hOldBitmap;
if(hMemDC!=NULL)
hOldBitmap=(CBitmap *)SelectObject(hMemDC,&bitmap );
//备注:由于hOldBitmap返回NULL,绘图失败??
BitBlt (dc.m_hDC,rect.left,rect.top,rect.right,rect.bottom,hMemDC,0,0,SRCCOPY);
if (hOldBitmap!=NULL) SelectObject(hMemDC,hOldBitmap);
if(hMemDC!=NULL) DeleteObject(hMemDC);
bitmap.DeleteObject();
}
~~~~~~~~~
是什么数据,有没有FileHeader,有没有BMPInfoHeader
没有InfoHeader的话,HBITMAP不能指向它
有FileHeader的话,HBITMAP也不能指向它
你用不着 SelectObject()返回值
hOldBitmap=(CBitmap *)SelectObject(hMemDC,&bitmap );
因为你的 DC中原来没有 HBITMAP, 所以返回 NULL
不要返回值,也别选回去
该成:
SelectObject(hMemDC,&bitmap );
BitBlt (dc.m_hDC,rect.left,rect.top,rect.right,rect.bottom,hMemDC,0,0,SRCCOPY);