StretchDIBits返回值为0!显示不出图像。Help~该怎么处理
StretchDIBits返回值为0!!???显示不出图像。Help~~~ - C++ Builder / Windows SDK/API
在C++ Builder中,我利用StretchDIBits来显示解码后的264视频图像。同样的视频,同样的操作,大多数时间都能显示图像。但是,少数时间显示不出来图像该函数返回值为0。
代码如下:
HDC hdc= ::GetDC(Form1->Panel1->Handle);
::SetStretchBltMode(hdc,STRETCH_DELETESCANS);
BITMAPINFO bif ;
memset(&bif, 0, sizeof(BITMAPINFOHEADER)+sizeof(RGBQUAD));
bif.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
bif.bmiHeader.biWidth = Imageinfo[1];//图像宽
bif.bmiHeader.biHeight = Imageinfo[0];//图像高
bif.bmiHeader.biPlanes = 1;
bif.bmiHeader.biBitCount = 24;
bif.bmiHeader.biCompression = BI_RGB;
bif.bmiHeader.biSizeImage = Imagedata_size;//宽*高*3
bif.bmiHeader.biXPelsPerMeter = 0;
bif.bmiHeader.biYPelsPerMeter = 0;
bif.bmiHeader.biClrUsed = 0;
bif.bmiHeader.biClrImportant = 0;
int i=::StretchDIBits(hdc,0,0,Imageinfo[1],Imageinfo[0],
0,0,Imageinfo[1],Imageinfo[0],
pImagedata/*图像数据*/,&bif,DIB_RGB_COLORS, SRCCOPY);
//有时不显示图像
delete[] pImagedata;
DeleteDC(hdc);
------解决方案--------------------
183的错误表示"当文件已存在时,无法创建该文件。" 好奇怪. 确认是StretchDIBits函数执行后的GetLastError吗?
在C++ Builder中,我利用StretchDIBits来显示解码后的264视频图像。同样的视频,同样的操作,大多数时间都能显示图像。但是,少数时间显示不出来图像该函数返回值为0。
代码如下:
HDC hdc= ::GetDC(Form1->Panel1->Handle);
::SetStretchBltMode(hdc,STRETCH_DELETESCANS);
BITMAPINFO bif ;
memset(&bif, 0, sizeof(BITMAPINFOHEADER)+sizeof(RGBQUAD));
bif.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
bif.bmiHeader.biWidth = Imageinfo[1];//图像宽
bif.bmiHeader.biHeight = Imageinfo[0];//图像高
bif.bmiHeader.biPlanes = 1;
bif.bmiHeader.biBitCount = 24;
bif.bmiHeader.biCompression = BI_RGB;
bif.bmiHeader.biSizeImage = Imagedata_size;//宽*高*3
bif.bmiHeader.biXPelsPerMeter = 0;
bif.bmiHeader.biYPelsPerMeter = 0;
bif.bmiHeader.biClrUsed = 0;
bif.bmiHeader.biClrImportant = 0;
int i=::StretchDIBits(hdc,0,0,Imageinfo[1],Imageinfo[0],
0,0,Imageinfo[1],Imageinfo[0],
pImagedata/*图像数据*/,&bif,DIB_RGB_COLORS, SRCCOPY);
//有时不显示图像
delete[] pImagedata;
DeleteDC(hdc);
------解决方案--------------------
183的错误表示"当文件已存在时,无法创建该文件。" 好奇怪. 确认是StretchDIBits函数执行后的GetLastError吗?