2 qq 40145411 qq_40145411 于 2017.09.12 07:56 提问

关于BitBlt函数显示位图时的图片分割问题

最近在做一个远程监控程序,被控方截图发送到监控方然后显示,但是在显示时,发现图片左边一部分被切割到了右边,这是怎么产生的?
已经将截图文件和接收的文件对比过了,图片文件没出错,感觉应该错在显示上,我是用的BitBlt函数显示的,不知道出了什么问题。
显示功能的代码如下
BOOL CMFCApplication4Dlg::onEraseBkgnd(CDC* pDC)
{
CDC DCmem;
DCmem.CreateCompatibleDC(pDC);
CBitmap bitmap;
bitmap.m_hObject = GetBitmapFromData();

CRect rect;
GetClientRect(&rect);

CBitmap *pOldBit = DCmem.SelectObject(&bitmap);
BITMAP bmpinfo;
bitmap.GetBitmap(&bmpinfo);
pDC->BitBlt(0, 0, rect.Width(), rect.Height(), &DCmem, 0, 0, SRCCOPY);
/*pDC->SetStretchBltMode(STRETCH_HALFTONE);
pDC->StretchBlt(0, 0, rect.Width(), rect.Height(), &DCmem, 0, 0, bmpinfo.bmWidth, bmpinfo.bmHeight,SRCCOPY);*/

DCmem.DeleteDC();
bitmap.DeleteObject();
//ReleaseDC(&DCmem);

return TRUE;

}

2个回答

sy95122
sy95122   2017.09.12 09:12

这段代码看不出来什么问题

也许是网络接收数据后缓冲区的读写问题

shen_wei
shen_wei   Ds   Rxr 2017.09.12 16:06

数据整体右移,说明你的接受数据生产BMP时产生了错误。。看看这部分代码!!

 发现图片左边一部分被切割到了右边
Csdn user default icon
上传中...
上传图片
插入图片