vc++这个函数什么意思?

来源:百度知道 编辑:UC知道 时间:2024/06/17 10:17:26
DrawDibRealize(m_hDrawDib,pDC->GetSafeHdc(),TRUE);

我注释掉就没有错误,加上就有错误,这个函数什么意思呢?

这个函数是 Vfw32.lib 库中的,你在工程中附加这个库文件就可以了。

DrawDib 系列函数,是在DirectX未流行之前,MS定义的一组函数,用来高速输出图像到显卡的,不同于一般的GDI输出功能,这些函数绕过了GDI层,直接写入数据到显卡的帧缓存。

以前的视频输出游戏很多都使用的这些函数

现在不怎么用了,但windows都还支持的

使用DrawDibDraw是为了对图象快速操作,图象数据做为数组,图象处理直接对数组操作,不需要SetPixelV等,然后通过DrawDibDraw显示,因此其参数需要这个数组的首址,同时还需要BITMAPINFOHEADER,知道该图象多大,位深等信息。你要用这个显示HBITMAP就违反其初衷了,因为需要从HBITMAP转成图象数据:
如你上面的代码得到HBITMAP,BITMAPINFOHEADER以后,需要
COLORREF lpbuf = new COLORREF[bmp.bmWidth * bmp.bmHeight];
HDC hDC=GetDC(hWnd);
GetDIBits(hDC,hBitmap,0,bmp.bmHeight,lpbuf,pbminfo,DIB_RGB_COLORS);
ReleaseDC(hWnd,hDC);

然后把lpbuf作为参数,DrawDibDraw最后一个参数换成DDF_HALFTONE试试看。

32