使用StretchDIBits显示Bitmap时,发现按默认的下面这种写法会使显示的图像上下颠倒。
CWin32Bitmaps.SetStretchBltMode(m_pHDC, COLORONCOLOR);
CWin32Bitmaps.StretchDIBits(
m_pHDC,
0,
0,
pictureBox.Width,
pictureBox.Height,
0,
0,
_imgBmp.Width,
_imgBmp.Height,
m_byColorBuffer,
m_pBitmapInfo,
DIB_RGB_COLORS,
SRCCOPY);
网上查了,原因好像是说“一般的BMP是倒序放的,GDI显示图像会让其正序显示,包括StretchDIBits在内”。
那改一下开始的点和高度方向就完了呗:
CWin32Bitmaps.SetStretchBltMode(m_pHDC, COLORONCOLOR);
CWin32Bitmaps.StretchDIBits(
m_pHDC,
0,
pictureBox.Height,
pictureBox.Width,
-pictureBox.Height,
0,
0,
_imgBmp.Width,
_imgBmp.Height,
m_byColorBuffer,
m_pBitmapInfo,
DIB_RGB_COLORS,
SRCCOPY);