M
Ok, hab's hingekriegt. Hier der Code:
if (0 == m_pBitmapInfo)
{
m_pBitmapInfo = (BITMAPINFO *) (new BYTE[sizeof(BITMAPINFO) + 256 * sizeof(RGBQUAD)]);
}
m_pBitmapInfo->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
m_pBitmapInfo->bmiHeader.biWidth = m_width;
m_pBitmapInfo->bmiHeader.biHeight = m_height;
m_pBitmapInfo->bmiHeader.biPlanes = 1;
m_pBitmapInfo->bmiHeader.biBitCount = 8;
m_pBitmapInfo->bmiHeader.biCompression = BI_RGB;
m_pBitmapInfo->bmiHeader.biSizeImage = m_width*m_height;
m_pBitmapInfo->bmiHeader.biClrUsed = 0;
m_pBitmapInfo->bmiHeader.biClrImportant = 0;
if (0 != datap)
{
if (0 != m_pBitmapInfo)
{
for (int n=0; n < 256; n++)
{
m_pBitmapInfo->bmiColors[n].rgbBlue=n;
m_pBitmapInfo->bmiColors[n].rgbGreen=n;
m_pBitmapInfo->bmiColors[n].rgbRed=n;
m_pBitmapInfo->bmiColors[n].rgbReserved=0;
}
}
HBITMAP dibBmp = (HBITMAP)::CreateDIBSection(0, m_pBitmapInfo, DIB_RGB_COLORS, 0, 0, 0x0);
CDC dcMem_display;
dcMem_display.CreateCompatibleDC(dc);
CBitmap cBmp;
cBmp.Attach(dibBmp);
cBmp.SetBitmapBits(m_width*m_height, datap);
HBITMAP BitmapOld = (HBITMAP)SelectObject(dcMem_display, dibBmp);
dc->StretchBlt(xOffset, yOffset, m_width*rectSizeX, m_height*rectSizeY, &dcMem_display, 0, 0, m_width, m_height, SRCCOPY);
dcMem_display.SelectObject(BitmapOld);
dcMem_display.DeleteDC();
}
Mac