Обрезка изображения
[Функция, связанная с этой страницей, класс окна MCIWnd, является устаревшей функцией. Он был заменен MediaPlayer. MediaPlayer оптимизирован для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует по возможности использовать MediaPlayer вместо класса MCIWnd Window. Корпорация Майкрософт предлагает переписать существующий код, в котором используются устаревшие API, чтобы по возможности использовать новые API.]
В следующем примере создается окно MCIWnd и загружается файл AVI. Окно содержит команду обрезки в меню, которая обрезает одну четверть высоты или ширины с каждой из четырех сторон рамки. В этом примере извлекаются текущие (начальные) измерения исходного прямоугольника с помощью макроса MCIWndGetSource . Измененный исходный прямоугольник составляет половину исходной высоты и ширины и центрируется в исходном кадре. Вызов макроса MCIWndPutSource переопределяет координаты исходного прямоугольника.
// extern RECT rSource, rDest;
case WM_COMMAND:
switch (wParam)
{
case IDM_CREATEMCIWND:
g_hwndMCIWnd = MCIWndCreate( hwnd,
g_hinst,
WS_CHILD | WS_VISIBLE,
"sample.avi" );
break;
case IDM_CROPIMAGE: // crops image
MCIWndGetSource(g_hwndMCIWnd, &rSource); // source rectangle
rDest.left = rSource.left + // new boundaries
((rSource.right - rSource.left) / 4);
rDest.right = rSource.right -
((rSource.right - rSource.left) / 4);
rDest.top = rSource.top +
((rSource.bottom - rSource.top) / 4);
rDest.bottom = rSource.bottom -
((rSource.bottom - rSource.top) / 4);
MCIWndPutSource(g_hwndMCIWnd, &rDest); // new source rectangle
}
break;
// Handle other messages here.