一个图像显示的问题.

olivine1 2006-04-30 10:28:28
我已经得到了一个图像的RGB的值,存储在lData中(因此现在的图像相当于是24bit的数据),而我的显卡是16bit的,我如何在这样的显卡上正确的显示我的RGB数据.我现在用的是以下的方法:


HDC DC = GetDC(0);
LPVOID pDataScreen = NULL;
BITMAPINFOHEADER bmpHeader;
ZeroMemory(&bmpHeader, sizeof(BITMAPINFOHEADER));
bmpHeader.biSize = sizeof(BITMAPINFOHEADER);
bmpHeader.biWidth = width;
bmpHeader.biHeight = height;
bmpHeader.biPlanes = 1;
bmpHeader.biBitCount = 16;
bmpHeader.biCompression = BI_BITFIELDS;
bmpHeader.biSizeImage = bmpHeader.biWidth*bmpHeader.biHeight*2;
bitmap = CreateDIBSection(hdc,(BITMAPINFO*)&bmpHeader,DIB_RGB_COLORS,&pDataScreen,NULL,0);

hdcMem = CreateCompatibleDC( hdc );
SelectObject( hdcMem, bitmap );
memcpy(pDataScreen,(void *)pData,width*height*2);
BitBlt( hdc,(320-176)/2, (240-144)/2-20,320, 240,hdcMem,0, 0,SRCCOPY);
ReleaseDC( MainQue, hdc );
DeleteObject(bitmap);
DeleteDC(hdcMem);

可是这样不能正常显示,请问问题出在哪里,还请大家指点
...全文
295 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
livedeal 2006-05-12
  • 打赏
  • 举报
回复
bm2->CreateBitmap (cx,cy,1,bitspixel,temp);
bitspixel=32 temp就是4个字节为一个像素点的颜色;
bitspixel=24 temp就是3个字节为一个像素点的颜色;
bitspixel=16 temp就是2个字节为一个像素点的颜色;
好像是这样的,我16的没有试过,24和32的用过.
huzhuo 2006-05-12
  • 打赏
  • 举报
回复
路过
olivine1 2006-05-12
  • 打赏
  • 举报
回复
??
olivine1 2006-05-08
  • 打赏
  • 举报
回复
求助啊!
davemin 2006-05-02
  • 打赏
  • 举报
回复
1. 保证pDataScreen是bitmap 的数据。
2. BitBlt对有些设备并不支持。比如有些print dc. 可以使用StretchBlt, StretchDIBits, SetDIBits etc...

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧