-1

我正在尝试为我的程序编写一个组件,以从视频中重新调整图像帧的大小。当前代码被调用,它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。

使用上面的当前代码,我得到以下输出。 在此处输入图像描述

谢谢!

http://i.stack.imgur.com/dWXRZ.png

4

1 回答 1

0

一种快速的方法。创建一个空白(白色)图像并将其拉伸到原始图像上,然后 StretchBlt 调整大小的图像。

于 2014-10-15T06:00:02.230 回答