我使用的StretchDIBits功能和位圖的顯示期間,我可以看到,它被顯示在兩種不同的方式,例如以下:MFC - 模糊/像素化BMP與的StretchDIBits
我正在做的唯一事情就是每當我得到新數據時更新BMP緩衝區。
請在下面找到用於顯示位圖的相關代碼。
if (pBMPBuffer)
{
LPBITMAPINFO pBmpInfo;
pBmpInfo = (LPBITMAPINFO) new BYTE[sizeof(BITMAPINFOHEADER) + 256 * sizeof(RGBQUAD)];
pBmpInfo->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
pBmpInfo->bmiHeader.biWidth = m_iZSize;
pBmpInfo->bmiHeader.biHeight = m_iXSize;
pBmpInfo->bmiHeader.biPlanes = 1;
pBmpInfo->bmiHeader.biBitCount = 32;
pBmpInfo->bmiHeader.biCompression = BI_RGB;
pBmpInfo->bmiHeader.biSizeImage = m_iXSize * m_iZSize;
pBmpInfo->bmiHeader.biXPelsPerMeter = 0;
pBmpInfo->bmiHeader.biYPelsPerMeter = 0;
pBmpInfo->bmiHeader.biClrUsed = 0;
pBmpInfo->bmiHeader.biClrImportant = 0;
SetStretchBltMode(pDC->m_hDC, STRETCH_HALFTONE);
StretchDIBits(pDC->m_hDC,
rectBMP.left,
rectBMP.top,
rectBMP.Width(),
rectBMP.Height(),
0,
0,
m_iZSize,
m_iXSize,
pBMPBuffer,
pBmpInfo,
DIB_RGB_COLORS,
SRCCOPY);
delete[] pBmpInfo;
}
我想使位圖始終具有「模糊」的外觀。 在此先感謝。
該文件指出,應始終使用'SetBrushOrgEx' SetStretchBltMode'後',你有沒有嘗試過? –
嗨馬克,我剛剛嘗試過,它現在顯示「僅」像素類型。你有什麼想法我怎麼能得到「模糊」的? – Toyo
對不起,如果我這樣做,我會回答這個問題。我可以建議的唯一的事情是改變'SetBrushOrgEx'的參數。 –