Поделиться через


Обрезка изображения

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