![]() |
|
|
![]()
|
|
| aTBepTKa |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 8.3.2009 Репутация: нет Всего: нет |
Собственно вопрос. Как разместить каринку над кнопкой. Т.е. чтобы картинка прикрывала кнопку. Первая мысль - разместить картинку на панели, но у меня картинка не квадратная (PNG). Как же тогда реализовать это дело?
|
|||
|
||||
| Klin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: 20 Всего: 25 |
Если я все правильно понял, то поможет компонент TBitBtn.
-------------------- Я человек - попробуйте обвинить меня за это. |
|||
|
||||
| aTBepTKa |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 8.3.2009 Репутация: нет Всего: нет |
Не, BitBtn это не то. Мне вообще надо чтобы на проигрываемом видео вылазила картинка. В первом посте написал про кнопку, чтобы не путать людей, т.к. принцип всеравно должен быть одинаковый.
|
|||
|
||||
| Klin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: 20 Всего: 25 |
Эмм... забавно... ну да ладно...
-------------------- Я человек - попробуйте обвинить меня за это. |
|||
|
||||
| aTBepTKa |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 8.3.2009 Репутация: нет Всего: нет |
Хммм. Похоже стоило сразу коректно задавать вопрос.
В общем нужно как-то вывести над проигрывающимся видео (ТМедиаПлеер) картинку (PNG). Если бы она имела прямоугольную форму, обошолся бы простой панелькой. Но это не тот случай. Тут хорошую идею подсказали: Image1->Parent = ... . Вот не могу понять что туда вписать. В случае с кнопкой всё понятно. А тут не совсем. |
|||
|
||||
| Klin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: 20 Всего: 25 |
В Display что задано?
-------------------- Я человек - попробуйте обвинить меня за это. |
|||
|
||||
| aTBepTKa |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 8.3.2009 Репутация: нет Всего: нет |
MediaPlayer1->Display=Form1
|
|||
|
||||
| Klin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: 20 Всего: 25 |
Уже интересней. Канва успехов не даст... а вот если что-то с прозрачностью. Возможно фреймы, сейчас подумаю.
Добавлено через 4 минуты и 31 секунду Похоже вот:
-------------------- Я человек - попробуйте обвинить меня за это. |
|||
|
||||
| aTBepTKa |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 8.3.2009 Репутация: нет Всего: нет |
Что означает эта строка: Canvas->Handle = GetDC(0); ?
А вообще интересный эффект получился Может быть я в корне не правильно для себя задачу поставил. Пишется программа, которая загружает видеофайл в окно. Внутри программы управление решил реализовать при помощи выдвигающейся панели, где будут расположены всякие кнопочки. Эта панель - и есть та картинка, о которой идёт речь в этой теме. Может быть будет проще переработать графическую часть, и сделать так, чтобы картинка была прямоугольная? Тогда её можно будет повесить на панель, что было бы намного проще; но заниматься этим ой как не хочится. |
|||
|
||||
| Klin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: 20 Всего: 25 |
Конечно можно просто изменить подход - сделать изображения квадратными или просто использовать их вне формы.
Существует таймер, он может постоянно рисовать ваши картинки, вопрос в том, что происход процесс прорисовки, в котором канва рисует на экране (это и есть Canvas->Handle = GetDC(0)) изображение, после чего, MediaPlayer прорисовывает на форме видео). Из-за того, что прорисовка происходит методом наложения на экране - возникает подобный эффект. Если бы происходил просчет, а потом прорисовка, вопроса бы и не было. Сейчас посмотрю, что можно сделать через перехват событий прорисовки, если не удасться добиться "мягкого" эффекта, то это можно будет реализовать имхо только через перехват видео... но тут лично я вам помочь не смогу. Добавлено через 1 минуту и 26 секунд Хотя есть простой, но грубый вариант. Можно создать вторую форму и сделать ее прозрачной и на ней расположить нужные изображения. Тормозов вообще не будет, но как и сказал - это грубый вариант. -------------------- Я человек - попробуйте обвинить меня за это. |
|||
|
||||
| Klin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: 20 Всего: 25 |
Нет, сообщения ничего не дают. Похоже, что самым рациональным методом будет все-таки вторая форма. Хотя возможно существуют другие компоненты, для воспроизведения видео, которые смогут помочь реализовать задачу.
-------------------- Я человек - попробуйте обвинить меня за это. |
|||
|
||||
| aTBepTKa |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 8.3.2009 Репутация: нет Всего: нет |
Да, наверное формы лучше всего будет использовать. Но тут одно но: как сделать форму прозрачной? Конечно, это очень просто когда имеется две отдельные формы. Ставим какой-нибудь цвет фона, такой же цвет в транспарент колор, и всё работает отлично. Но если вторая форма будет дочерней от первой, то тут это не прокатит. И другие схожие способы тоже.
Придумал следующий выход из ситуации: оставить две формы, не зависимыми друг от друга, но вторую "привязать" к первой. И в тот момент, когда пользователь вызывает навигационную панель (эту самую форму), изменять не left, как я планировал сразу, а параметр width. Т.е. не двигать форму, а растягивать её. Klin, спасибо за помощ. |
|||
|
||||
| Klin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: 20 Всего: 25 |
Способ реализовать "привязку" очень много, так что тут думаю вопросов возникнуть не должно, но как всегда - существует наш форум.
За помощь - всегда пожалуйста. Только не забудьте пометить вопрос, как решенный ;) -------------------- Я человек - попробуйте обвинить меня за это. |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 48 Всего: 223 |
MediaPlayer играет видео через DirectX (DirectShow). И ему глубоко фиолетово, какие окна будет пытаться GDI расположить поверх его окна вывода. Работать это нормально не будет - готовьтесь поиметь феерверк глюков разных размеров и оттенков
Если хотите вставлять свои картинки в вывод - пользуйтесь DirectShow напрямую и VideoOverlay (кажется так, нету сейчас DXSDK под рукой) |
|||
|
||||
| Klin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: 20 Всего: 25 |
xvr, вы же понимаете, что существует порядок вывода окон? Поэтому здесь осложнений и глюков возникнуть не должно. Просто это грубый способ... хотя возможно не очень то он и грубый. По началу я думал, что нужно сделать простой логотип поверх отображаемого видео. А нужно реализовать своеобразное меню, то потом, даже если сделать все красиво через DirectShow, то возникнет необходимость заниматься перехватом координат мыши, в зависимости от размера и положения видео. Так что, возможно, это не такой плохой вариант, как я думал.
-------------------- Я человек - попробуйте обвинить меня за это. |
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |