// 支持的图片类型:bmp、jpeg、png、gif
int ShowImage(HWND hDlg, WORD wControlId, PBYTE pbImageData, INT iDataLen)
{
HWND hDlgItem = GetDlgItem(hDlg, wControlId);
if ( hDlgItem != NULL )
{
IStream* pIStream = NULL;
CreateStreamOnHGlobal(NULL, TRUE, &pIStream);
if ( pIStream != NULL && pbImageData != NULL && iDataLen > 0 )
{
pIStream->Write(pbImageData, iDataLen, NULL);
LARGE_INTEGER liTemp = {0};
pIStream->Seek(liTemp, STREAM_SEEK_SET, NULL);
Bitmap cBitmap(pIStream);
if ( Ok == cBitmap.GetLastStatus() )
{
Graphics g(hDlgItem);
if ( Ok == g.GetLastStatus() )
{
CRect cRect;
GetClientRect(hDlgItem, &cRect);
Rect r(cRect.left, cRect.top, cRect.Width(), cRect.Height());
if ( Ok == g.DrawImage(&cBitmap, r) )
{
return 0;
}
}
}
}
}
return -1;
}
int ShowRgbImage(HWND hDlg, WORD wControlId, PBYTE pbBgr, int iWidth, int iHeight)
{
HWND hDlgItem = GetDlgItem(hDlg, wControlId);
if ( hDlgItem != NULL )
{
HDC hDC = GetDC(hDlgItem);
if ( hDC != NULL )
{
Graphics g(hDC);
if ( Ok == g.GetLastStatus() )
{
CRect cRect;
GetClientRect(hDlgItem, &cRect);
Rect r(cRect.left, cRect.top, cRect.Width(), cRect.Height());
Bitmap cBmp(iWidth, iHeight, iWidth*3, PixelFormat24bppRGB, pbBgr);
if ( Ok == g.DrawImage(&cBmp, r) )
{
return 0;
}
}
ReleaseDC(hDlgItem, hDC);
}
}
return -1;
}
通过GDI+显示图片数据
最新推荐文章于 2014-12-26 13:58:47 发布
本文提供了两种在Windows对话框中显示图像的方法:一种是通过IStream加载标准图像格式(如bmp、jpeg等),另一种则是直接从RGB数据创建并显示位图。文章详细介绍了这两种方法的具体实现步骤。
4669

被折叠的 条评论
为什么被折叠?



