为什么位图叠加文字后,字符是反的,是什么原因?
//在图片底部叠加文字
void TextInBmpFile2(BYTE *pBuf, int nImageWidth, int nImageHeight, const char *pText)
{
BITMAPINFOHEADER bmih;
memset(&bmih,0,sizeof(BITMAPINFOHEADER));
bmih.biSize = sizeof(BITMAPINFOHEADER);
bmih.biWidth = nImageWidth;
bmih.biHeight = nImageHeight;
bmih.biPlanes = 1;
bmih.biBitCount = 24;
bmih.biSizeImage = nImageWidth*nImageHeight*3;
HDC BmpDC;
HBITMAP hBitmap;
RECT rect;
memset(&rect, 0, sizeof(RECT));
rect.right = nImageWidth;
rect.bottom = nImageHeight;
BmpDC = CreateCompatibleDC(NULL);
hBitmap = CreateDIBitmap(GetDC(NULL), &bmih, CBM_INIT, pBuf, (BITMAPINFO*)&bmih, DIB_RGB_COLORS);
if (hBitmap) {
SelectObject(BmpDC, hBitmap);
// SetBkMode(BmpDC, TRANSPARENT);
DrawText(BmpDC, pText, strlen(pText), &rect, DT_SINGLELINE | DT_BOTTOM | DT_LEFT);
GetDIBits(BmpDC, hBitmap, 1, nImageHeight, pBuf, (BITMAPINFO*)&bmih, DIB_RGB_COLORS);
}
DeleteDC(BmpDC);
}
str.Format("%s | %-16s | %.2fkm/h ",
g_pView->CamInfo[nCurCam].strRoadName,
g_pView->m_vehrec.vehid,
nSpeed);
TextInBmpFile2(pByte, pFh->w, pFh->h, str);
pTemp = pByte;
pDstByte = pImageBuf;
memcpy(pImageBuf, pByte, nWidth * nHeight * 3);