|
我就这样做的,但还是没显示出来哈..
huangtaoyuan能帮忙看一下么
int width=image.GetWidth();
int height=image.GetHeight();
HDC hScrDC = ::GetDC(m_PictureWindow.m_hWnd);
HDC hMemDC = CreateCompatibleDC(hScrDC);
BYTE *lpBitmapBits = NULL;
MyRGB* pDes = (MyRGB*)malloc(width * height * 3 + 1);//
memset(pDes,0,width * height * 3 + 1);
MyRGB* pSrc = (MyRGB* )lpBitmapBits;//
BITMAPINFO RGB24BitsBITMAPINFO;
ZeroMemory(&RGB24BitsBITMAPINFO, sizeof(BITMAPINFO));
RGB24BitsBITMAPINFO.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
RGB24BitsBITMAPINFO.bmiHeader.biWidth = width;
RGB24BitsBITMAPINFO.bmiHeader.biHeight = height;
RGB24BitsBITMAPINFO.bmiHeader.biPlanes = 1;
RGB24BitsBITMAPINFO.bmiHeader.biBitCount = 24;
HBITMAP directBmp = CreateDIBSection(hMemDC, (BITMAPINFO*)&RGB24BitsBITMAPINFO,
DIB_RGB_COLORS, (void **)&lpBitmapBits, NULL, 0);
//比如逆时针90°,变换如下:
for(int l = 0;l < width * height;l++)
{
int i = l/width;
int j = l%width;
pDes[j * height + height - 1 - i] = pSrc[i * width + j];
}
//然后在:
StretchDIBits(hScrDC,0,0,height,width,0,0,height,width,
pDes,&RGB24BitsBITMAPINFO,DIB_RGB_COLORS,SRCCOPY); |
|