Добрый день, уважаемые форумчане. Помогите разобраться с макросом.
Макрос - вставляет на форму видео по ссылке. Выглядит код формы - вот так: [vba]
Код
Private Sub WindowsMediaPlayer1_StatusChange() UserForm2.WindowsMediaPlayer1.settings.mute = True On Error Resume Next With UserForm2.WindowsMediaPlayer1
[/vba] Но нужно как-то расположить на форме не все видео, а только фрагмент из него.
На самом листе в ячейках F4 и G4 - представлены Высота-Ширина формы. В ячейках J4 и K4 - представлены координаты центра фрагмента. В ячейках N4 и O4 - представлены дробями- примерная ширина-высота фрагмента (по отношению к общей ширине и высоте формы).
В общем, для того чтобы нужный фрагмент - более-менее вписался в форму - это видео надо как-то растянуть и выбрать начальную координату размещения этого видео. (Эта координата - будет выходить за левый верхний край формы). В общем получится что-то навроде такого кода.
[vba]
Код
Private Sub WindowsMediaPlayer1_StatusChange() UserForm2.WindowsMediaPlayer1.settings.mute = True On Error Resume Next With UserForm2.WindowsMediaPlayer1
[/vba] То есть начальная координата размещения в форме - будет сдвинута. А размер самого видео - будет увеличен. И таким образом - можно добиться вписывание видео фрагмента - в форму.
Но вот только как макросом - правильно подобрать эти пропорции - я не понимаю. Посоветуйте - как это сделать ?
Добрый день, уважаемые форумчане. Помогите разобраться с макросом.
Макрос - вставляет на форму видео по ссылке. Выглядит код формы - вот так: [vba]
Код
Private Sub WindowsMediaPlayer1_StatusChange() UserForm2.WindowsMediaPlayer1.settings.mute = True On Error Resume Next With UserForm2.WindowsMediaPlayer1
[/vba] Но нужно как-то расположить на форме не все видео, а только фрагмент из него.
На самом листе в ячейках F4 и G4 - представлены Высота-Ширина формы. В ячейках J4 и K4 - представлены координаты центра фрагмента. В ячейках N4 и O4 - представлены дробями- примерная ширина-высота фрагмента (по отношению к общей ширине и высоте формы).
В общем, для того чтобы нужный фрагмент - более-менее вписался в форму - это видео надо как-то растянуть и выбрать начальную координату размещения этого видео. (Эта координата - будет выходить за левый верхний край формы). В общем получится что-то навроде такого кода.
[vba]
Код
Private Sub WindowsMediaPlayer1_StatusChange() UserForm2.WindowsMediaPlayer1.settings.mute = True On Error Resume Next With UserForm2.WindowsMediaPlayer1
[/vba] То есть начальная координата размещения в форме - будет сдвинута. А размер самого видео - будет увеличен. И таким образом - можно добиться вписывание видео фрагмента - в форму.
Но вот только как макросом - правильно подобрать эти пропорции - я не понимаю. Посоветуйте - как это сделать ?SkyGreen
Форма так и не открылась, видимо, чего-то не хватает. Теоретически как-то так можно рассчитать. Проверила на простом изображении. Видео так и не удалось запустить. [vba]
Код
With UserForm2.WindowsMediaPlayer1 w = UserForm2.Width / Range("N4") 'ширина видео h = UserForm2.Height / Range("O4") 'высота видео L = (Range("F4") - w) / 2 'левый край видео при совпадении центров T = (Range("G4") - h) / 2 'верхний край видео при совпадении центров dx = (Range("J4") - 0.5) * w 'смещение от центра по х dy = (Range("K4") - 0.5) * h 'смещение от центра по у .Width = w .Height = h .Left = L + dx .Top = T + dy End With
[/vba] У картинки ещё пришлось установить свойство[vba]
Код
PictureSizeMode = fmPictureSizeModeStretch
[/vba]
Форма так и не открылась, видимо, чего-то не хватает. Теоретически как-то так можно рассчитать. Проверила на простом изображении. Видео так и не удалось запустить. [vba]
Код
With UserForm2.WindowsMediaPlayer1 w = UserForm2.Width / Range("N4") 'ширина видео h = UserForm2.Height / Range("O4") 'высота видео L = (Range("F4") - w) / 2 'левый край видео при совпадении центров T = (Range("G4") - h) / 2 'верхний край видео при совпадении центров dx = (Range("J4") - 0.5) * w 'смещение от центра по х dy = (Range("K4") - 0.5) * h 'смещение от центра по у .Width = w .Height = h .Left = L + dx .Top = T + dy End With
[/vba] У картинки ещё пришлось установить свойство[vba]
Pelena, нет - такое свойство есть только у картинки. У видеопроигрывателя - есть какое-то свойство stretchToFit = True Но что-то никакой реакции на этот stretchToFit - не наблюдается. Потом у вас на форме - сама картинка искажается (речь шла об приблизительном увеличении фрагмента без искажений).
Я спрашиваю - потому что увеличение-то на видео действует, только не в тех пропорциях в каких нужно.
Pelena, нет - такое свойство есть только у картинки. У видеопроигрывателя - есть какое-то свойство stretchToFit = True Но что-то никакой реакции на этот stretchToFit - не наблюдается. Потом у вас на форме - сама картинка искажается (речь шла об приблизительном увеличении фрагмента без искажений).
Я спрашиваю - потому что увеличение-то на видео действует, только не в тех пропорциях в каких нужно.SkyGreen
Сообщение отредактировал SkyGreen - Суббота, 04.05.2019, 04:39
Ну, не знаю. Сделала форму, добавила видео и свой код, всё получается, пропорции не искажаются. Только в стандартном модуле последовательность поменяла [vba]
Ну, не знаю. Сделала форму, добавила видео и свой код, всё получается, пропорции не искажаются. Только в стандартном модуле последовательность поменяла [vba]