使用CDC重新调整图像大小

时间:2014-10-15 04:33:38

标签: c++ frames cdc video-editing lpstr

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

使用上面的当前代码,我得到以下输出。 enter image description here

谢谢!

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

1 个答案:

答案 0 :(得分:0)

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