Обрезка изображения
[Функция, связанная с этой страницей, класс окна 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.