如何把二维数组pBuffer以图像的形式快速显示出来?
数组维数u1,u2,用SetPiex()显示速度太慢,有什么办法可以快速显示的?最好给出源码。
谢谢各位大虾!
问题点数:100、回复次数:6Top
1 楼cwcsdn(nic)回复于 2005-03-28 18:40:24 得分 10
CDC::SetPixelV
SetPixelV is faster than SetPixel because it does not need to return the color value of the point actually painted.
Top
2 楼maibishinian(面壁十年)回复于 2005-03-28 21:50:35 得分 0
还有没有其他的方法?比如我以者个数组构造一副虚拟的bmp图像,而后用bilblt等来显示,可行么?Top
3 楼Mackz(在相互)回复于 2005-03-29 00:31:07 得分 90
用SetDIBitsToDevice()
把下面例子中关于Image指针的内容换成你的数组就可以了,不过要注意:
作为宽度必须是扩充到4字节的倍数,也可以仍然有下面的代码,把数组内容复制到Image中去;
根据你的数据调节bmi.bmiHeader.biBitCount。
int iWidth, iHeight, iBytesWidth;
iWidth = 500;
iHeight = 500;
float dTemp = 960;
iBytesWidth = (iWidth % 4) ? (iWidth / 4 + 1) * 4 : iWidth;
HANDLE hMem = GlobalAlloc(GMEM_MOVEABLE, iBytesWidth * iHeight * 3);
BYTE *Image = (BYTE*)GlobalLock(hMem);//new BYTE[iBytesWidth * iHeight * 3];
//memset(Image, 100, iBytesWidth * iHeight * 3);
BITMAPINFO bmi;
ZeroMemory(&bmi, sizeof(BITMAPINFO));
bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
bmi.bmiHeader.biWidth = iWidth;
bmi.bmiHeader.biHeight = iHeight;
bmi.bmiHeader.biPlanes = 1;
bmi.bmiHeader.biBitCount = 24;
bmi.bmiHeader.biCompression = BI_RGB;
::SetDIBitsToDevice(pDC->GetSafeHdc(), 0, 0, iWidth, iHeight, 0, 0, 0, iHeight, Image, &bmi, DIB_RGB_COLORS);
GlobalUnlock(hMem);
GlobalFree(hMem);
delete []Image;
Top
4 楼rocklabzhang()回复于 2005-04-02 12:26:59 得分 0
markTop
5 楼DWDLL(不跟利索)回复于 2005-04-03 01:49:57 得分 0
记号Top
6 楼awperpvip(挖靠我狂晕来CSDN这么久,竟不知道原来名字可以这么长)回复于 2005-04-16 15:35:54 得分 0
remarkTop




