COLORREF _colors[768][1024]里面存放的是各个像素点的RGB值,代码如下BITMAPINFO bmi ;
DWORD dwInfoSize ;
dwInfoSize = sizeof (BITMAPINFOHEADER) ;
ZeroMemory (&bmi, dwInfoSize) ; CRect rect;
GetClientRect(&rect);
bmi.bmiHeader.biSize = sizeof (BITMAPINFOHEADER) ;
bmi.bmiHeader.biWidth = rect.Width() ;
bmi.bmiHeader.biHeight = rect.Height() ;
bmi.bmiHeader.biPlanes = 1 ;
bmi.bmiHeader.biBitCount = 32;
bmi.bmiHeader.biCompression = BI_RGB ;
bmi.bmiHeader.biSizeImage = 0 ;
bmi.bmiHeader.biXPelsPerMeter = 0 ;
bmi.bmiHeader.biYPelsPerMeter = 0 ;
bmi.bmiHeader.biClrUsed = 0 ;
bmi.bmiHeader.biClrImportant = 0 ; HBITMAP hBitmap = CreateDIBSection (NULL, &bmi, DIB_RGB_COLORS, (void**)_colors, NULL, 0); HDC hdc = GetDC()->GetSafeHdc(); SetDIBits(hdc,hBitmap,0,rect.Width()*rect.Height(),_colors,&bmi,DIB_RGB_COLORS);但是颜色就是出不来,麻烦各位指点下哪里出错了,万分感谢!
DWORD dwInfoSize ;
dwInfoSize = sizeof (BITMAPINFOHEADER) ;
ZeroMemory (&bmi, dwInfoSize) ; CRect rect;
GetClientRect(&rect);
bmi.bmiHeader.biSize = sizeof (BITMAPINFOHEADER) ;
bmi.bmiHeader.biWidth = rect.Width() ;
bmi.bmiHeader.biHeight = rect.Height() ;
bmi.bmiHeader.biPlanes = 1 ;
bmi.bmiHeader.biBitCount = 32;
bmi.bmiHeader.biCompression = BI_RGB ;
bmi.bmiHeader.biSizeImage = 0 ;
bmi.bmiHeader.biXPelsPerMeter = 0 ;
bmi.bmiHeader.biYPelsPerMeter = 0 ;
bmi.bmiHeader.biClrUsed = 0 ;
bmi.bmiHeader.biClrImportant = 0 ; HBITMAP hBitmap = CreateDIBSection (NULL, &bmi, DIB_RGB_COLORS, (void**)_colors, NULL, 0); HDC hdc = GetDC()->GetSafeHdc(); SetDIBits(hdc,hBitmap,0,rect.Width()*rect.Height(),_colors,&bmi,DIB_RGB_COLORS);但是颜色就是出不来,麻烦各位指点下哪里出错了,万分感谢!
HDC hdc = GetDC()->GetSafeHdc();
HBITMAP hBitmap = CreateDIBSection (hdc, &bmi, DIB_RGB_COLORS, (void**)_colors, NULL, 0);
BITMAPINFO bmi ;
DWORD dwInfoSize ;
dwInfoSize = sizeof (BITMAPINFOHEADER) ;
ZeroMemory (&bmi, dwInfoSize) ; CRect rect;
GetClientRect(&rect);
bmi.bmiHeader.biSize = sizeof (BITMAPINFOHEADER) ;
bmi.bmiHeader.biWidth = rect.Width() ;
bmi.bmiHeader.biHeight = rect.Height() ;
bmi.bmiHeader.biPlanes = 1 ;
bmi.bmiHeader.biBitCount = 32;
bmi.bmiHeader.biCompression = BI_RGB ;
bmi.bmiHeader.biSizeImage = 0 ;
bmi.bmiHeader.biXPelsPerMeter = 0 ;
bmi.bmiHeader.biYPelsPerMeter = 0 ;
bmi.bmiHeader.biClrUsed = 0 ;
bmi.bmiHeader.biClrImportant = 0 ; HDC hdc = GetDC()->GetSafeHdc(); ::SetDIBitsToDevice(hdc, 0, 0, rect.Width(), rect.Height(), 0, 0, 0, rect.Height(), _colors, &bmi, DIB_RGB_COLORS);
请参见
http://topic.csdn.net/u/20100126/10/960b8104-30d4-471d-89b2-12762f35956d.html通过bit写也是一种锻炼嘛,当做实验挺好的
1、colorref要一维数组才行;
2、HBITMAP hGray = ::CreateCompatibleBitmap(hDC, iWidth, iHeight);
SetDIBitsToDevice(hDC, 0, 0, rect.Width(), rect.Height(), 0, 0, 0, rect.Height(), (void*)colors, &bmi, DIB_RGB_COLORS);
这样就行了,谢谢大家