我正在尝试为程序编写一个组件来重新调整视频中的图像帧大小。调用当前代码,从当前帧中获取CDC
。
void showImageFrame(LPSTR info)
{
BITMAPINFOHEADER * pInfo = (BITMAPINFOHEADER *)info;
CDC* pDC=pWnd=GetDlgItem(IDCFrame)->GetDC();
CRect rect;
pWnd->GetClientRect(&rect);
SetDIBitsToDevice(pDC->GetSafeHdc(), 0, 0, rect.Width(), rect.Height(), 0, 0, 0, pInfo->biHeight, info + *(LPDWORD)info, (LPBITMAPINFO) pInfo, DIB_RGB_COLORS);
pDC->StretchBlt(0,0,200,200,pDC,0,0,rect.Width(),rect.Height(),SRCCOPY);
}
StretchBlt
会重新调整当前帧中显示的图像的大小,但会保留SetDIBitsToDevice
中较大的图像。有没有办法删除SetDIBitsToDevice
的图像,或以更有效的方式执行此操作?我正在尝试将图像重新调整为200x200。
使用上面的当前代码,我得到以下输出。
谢谢!
答案 0 :(得分:0)
一个快速的方法。创建一个空白(白色)图像并将其拉伸到原始图像上,然后StretchBlt您调整大小的图像。