【发布时间】:2014-12-10 01:21:30
【问题描述】:
我正在尝试为我的程序编写一个组件来调整视频中图像帧的大小。当前代码被调用,它从当前帧中获取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。
使用上面的当前代码,我得到以下输出。
谢谢!
【问题讨论】:
-
您是否打算调整图像大小并将其显示在与源窗口(框架)相同的窗口(框架)中?
-
是的,我希望能够重新调整图像大小并将其显示在同一帧内。有什么办法吗?
-
我仍在试图弄清楚如何在这些 cmets 中显示代码。对不起,不整洁
标签: c++ frames cdc video-editing lpstr