У меня есть простая форма, которая загружает и воспроизводит видео с помощью медиаплеера и компонентов управления медиаплеером. Есть ли способ изменить размер воспроизводимого видео с помощью полосы прокрутки или чего-то подобного в RAD Studio XE6.
Delphi MediaPlayer настроить размер
Ответы (2)
Изменение размера обычно выполняется путем изменения размера формы, на которой размещено окно просмотра, а не с помощью полос прокрутки. Попробуйте поместить медиаплеер в большую форму или панель с якорями со всех четырех сторон, чтобы он расширялся и сжимался по мере того, как вы регулируете углы формы.
Вы можете реализовать функции типа ZoomIn или ZoomOut, настроив свойство DisplayRect:
http://docwiki.embarcadero.com/Libraries/XE6/en/Vcl.MPlayer.TMediaPlayer.DisplayRect
Сначала вы, вероятно, захотите установить для DisplayRect размер элемента управления/компонента, который вы выбрали в качестве цели рендеринга, используя свойство Display:
http://docwiki.embarcadero.com/Libraries/XE6/en/Vcl.MPlayer.TMediaPlayer.Display
Чтобы избежать неравномерного растягивания, я рекомендую вам добавить необходимый код, чтобы иметь возможность вычислять правильные размеры DisplayRect при сохранении соотношения сторон.
Если вы хотите, вы можете сделать DisplayRect даже больше, чем ваш контроль рендеринга. Делая это, вы действительно достигаете эффекта ZoomIn.
Обратите внимание, что это только растягивает видеоконтент, поэтому вы можете столкнуться с потерей качества, потому что TMediaPlayer не использует для этого никаких специальных фильтров, как это делают многие коммерческие медиаплееры.
РЕДАКТИРОВАТЬ: у меня нет опыта использования TMediaPlayer на платформе FireMonkey, но после просмотра документации кажется, что все немного изменилось.
Например, в FMX есть специальный компонент TMediaPlayerControll, который необходим для рендеринга видео.
http://docwiki.embarcadero.com/Libraries/XE7/en/FMX.Media.TMediaPlayerControl
Но, глядя на документацию, я не могу найти никаких специальных свойств или методов для управления размером видео. Поэтому я предполагаю, что для реализации функций ZoomIn или ZoomOut будет использоваться тот же подход, что и для обычных компонентов FireMonkex.