19,464
社区成员
发帖
与我相关
我的任务
分享
unsigned char* pixel;
hdc = BeginPaint(hWnd, &ps);
BITMAPINFO bmi;
BITMAPINFOHEADER bi;
RGBQUAD lut[255];
int i;
bi.biSize=sizeof(BITMAPINFOHEADER);
bi.biWidth = nColumn;
bi.biHeight = nRow;
bi.biPlanes = 1;
bi.biBitCount = 8;
bi.biClrUsed = 256;
bi.biClrImportant = 256;
bi.biCompression = 0;
bi.biSizeImage = 512*512;
bi.biXPelsPerMeter = 0;
bi.biYPelsPerMeter = 0;
for (i=0;i<256;i++)
{
lut[i].rgbBlue = i;
lut[i].rgbGreen = i;
lut[i].rgbRed = i;
lut[i].rgbReserved = 0;
}
bmi.bmiHeader = bi;
bmi.bmiColors[0] = lut[0];
StretchDIBits(hdc,0,0,512,512,0,0,512,512,pixel,&bmi,DIB_PAL_COLORS,SRCCOPY);
EndPaint(hWnd, &ps);
for(j = 0;j<nColumn;j++)
for (i = 0;i < nRow;i ++)
{
color = RGB(*pixel,*pixel,*pixel);
::SetPixel(hdc,i,j,color);
pixel++;
}
BITMAPINFO* pbi = new BYTE[sizeof(BITMAPINFO) + 255 * sizeof(RGBQUAD)];
pbi->bmiHeader.biSize=sizeof(BITMAPINFOHEADER);
...// 初始化成员
for (int i=0;i<256;i++)
{
pbi->bmiColors[i].rgbBlue = i;
pbi->bmiColors[i].rgbGreen = i;
pbi->bmiColors[i].rgbRed = i;
pbi->bmiColors[i].rgbReserved = 0;
}
StretchDIBits( hdc, 0, 0, 512, 512, 0, 0, 512, 512, pixel, pbi, DIB_RGB_COLORS, SRCCOPY );
// 其实你不缩放的话,用SetDIBitsToDevice函数更快
hdc = BeginPaint(hWnd, &ps);
BITMAPINFO bmi;
BITMAPINFOHEADER bi;
RGBQUAD lut[256]; //先前写成了lut[255]
int i;