Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > Visual Basic: Общие вопросы > Текст поверх WindowsMediaPlayer


Автор: Jin X 09.03.22, 14:23
Всем салют!
На форме есть контрол WindowsMediaPlayer.
Мне нужно вывести текст поверх него.
Каким образом это можно сделать?
Проблема в том, что все остальные контролы всегда отображаются под WMP.

Автор: Jin X 09.03.22, 15:34
Думал о том, чтобы создать сверху объект "Надпись".
Но не могу понять как её создать. Делаю copy-paste, получается ерунда какая-то.
Во-первых, её положение относительно формы другое. Т.е. у формы Left/Top относительно экрана, а у объекта – относительно листа.
Во-вторых, не понимаю, как поменять текст. Пишу TextFrame.TextRange.Text = S, ругается.

Как-то можно именно _создать_ объект "Надпись" без рамки и с прозрачным фоном?
Желательно установив нужный цвет текста, сделав его жирным.
Разместить в нужное место.

Автор: Gonarh 09.03.22, 16:46
Не получится, ибо директХэ-оверлей.

Автор: Bubaylo 16.04.24, 05:56
А использовать TextOut из WinApi? В Api-Guide есть пример. Только надо Обновление сделать, чтоб по таймеру выводилось.
Gonarh
Думаешь GDI не перерисует поверх? Помню как-то давно была фишка...
Запускаешь видео в WMP, жмешь аль+принтскрин. Запускаешь Paint, делаешь заливку черным, жмешь ctrl+v, и вот видео идет и Пайнте и в плеере. Только в пайнте можно поверх рисовать=)

ПС
Сейчас проверил с различными плеерами, не проканывает=)

Автор: Majestio 16.04.24, 07:33
Цитата Jin X @
Всем салют!
На форме есть контрол WindowsMediaPlayer.
Мне нужно вывести текст поверх него.

Вывести текст можно более другим способом - проигрывать не самое видео, а скрипт от Avsynth. А вот в нем уже запрограммировать тайм-коды, положение, гарнитуру и цвет текста. Ну, естественно, для такой обработки Avsynth должен быть установлен в системе. До появления ChatGPT скрипты приходилось писать долго и муторно вручную, сейчас с этим гораздо проще - просто написать задание для ChatGPT. Пример:

Цитата
напиши мне скрипт для Аvsynth, который загружает видео video.mkv, и проигрывает его, при этом от начала и до конца проигрывания выводится текст в верхнем левом углу с отступами по вертикали и горионтали 96pх "Пример текста". Текст должен выводится белым цветом, шрифтом Arial, размером 14px. Текст должен иметь обводку черным цветом толщиной 2px

Вот ответ ChatGPT:
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    video = DirectShowSource("video.mkv")
    text = "Пример текста"
    text_color = $FFFFFF
    text_outline_color = $000000
    text_outline_thickness = 2
    text_font = "Arial"
    text_size = 14
    text_padding_x = 96
    text_padding_y = 96
     
    text_clip = TextSub(video, text, font=text_font, size=text_size, text_color=text_color, \
                        align=3, x=text_padding_x, y=text_padding_y, \
                        text_outline=text_outline_thickness, text_outline_color=text_outline_color)
     
    StackHorizontal(video, text_clip)

Этот скрипт нужно сохранить в файл с расширением .avs и проигрывать его.
Пробуй.

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)