Я пытаюсь написать компонент для моей программы, чтобы изменить размеры кадров изображения из видео. Текущий код называется, который принимает 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
или сделать это более эффективным способом? Я пытаюсь изменить размер изображения до 200×200.
Используя текущий код выше, я получаю следующий вывод.
Спасибо!
Один быстрый способ. Создайте пустое (белое) изображение и растяните его поверх исходного изображения, затем растяните изображение с измененным размером.