Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Timage над кнопкой 
:(
    Опции темы
aTBepTKa
Дата 24.3.2009, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 8.3.2009

Репутация: нет
Всего: нет



Собственно вопрос. Как разместить каринку над кнопкой. Т.е. чтобы картинка прикрывала кнопку. Первая мысль - разместить картинку на панели, но у меня картинка не квадратная (PNG). Как же тогда реализовать это дело?


PM MAIL   Вверх
Klin
Дата 24.3.2009, 21:53 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1938
Регистрация: 7.10.2002
Где: Краснодар

Репутация: 20
Всего: 25



Если я все правильно понял, то поможет компонент TBitBtn.


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
aTBepTKa
Дата 24.3.2009, 22:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 8.3.2009

Репутация: нет
Всего: нет



Не, BitBtn это не то. Мне вообще надо чтобы на проигрываемом видео вылазила картинка. В первом посте написал про кнопку, чтобы не путать людей, т.к. принцип всеравно должен быть одинаковый.
PM MAIL   Вверх
Klin
Дата 24.3.2009, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1938
Регистрация: 7.10.2002
Где: Краснодар

Репутация: 20
Всего: 25



Эмм... забавно... ну да ладно...

Код

  Image1->Parent = Button1;



--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
aTBepTKa
Дата 24.3.2009, 23:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 8.3.2009

Репутация: нет
Всего: нет



Хммм. Похоже стоило сразу коректно задавать вопрос. 

В общем нужно как-то вывести над проигрывающимся видео (ТМедиаПлеер) картинку (PNG). Если бы она имела прямоугольную форму, обошолся бы простой панелькой. Но это не тот случай. Тут хорошую идею подсказали: Image1->Parent = ... . Вот не могу понять что туда вписать. В случае с кнопкой всё понятно. А тут не совсем.
PM MAIL   Вверх
Klin
Дата 24.3.2009, 23:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1938
Регистрация: 7.10.2002
Где: Краснодар

Репутация: 20
Всего: 25



В Display что задано?


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
aTBepTKa
Дата 24.3.2009, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 8.3.2009

Репутация: нет
Всего: нет



MediaPlayer1->Display=Form1 
PM MAIL   Вверх
Klin
Дата 24.3.2009, 23:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1938
Регистрация: 7.10.2002
Где: Краснодар

Репутация: 20
Всего: 25



Уже интересней. Канва успехов не даст... а вот если что-то с прозрачностью. Возможно фреймы, сейчас подумаю.

Добавлено через 4 минуты и 31 секунду
Похоже вот:

Код

Canvas->Handle = GetDC(0);
Canvas->Draw(Left,Top,Image1->Picture->Graphic);



--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
aTBepTKa
Дата 25.3.2009, 00:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 8.3.2009

Репутация: нет
Всего: нет



Что означает эта строка: Canvas->Handle = GetDC(0); ?
А вообще интересный эффект получился smile . Судя по всему картинка выводится на экран, но её тут же прячет играющее видео, которое обнавляется через n-ое кол-во времени. Если видео приостановлено, то картинка вылазит. Но её можно "стереть" если потаскать окно. 

Может быть я в корне не правильно для себя задачу поставил. Пишется программа, которая загружает видеофайл в окно. Внутри программы управление решил реализовать при помощи выдвигающейся панели, где будут расположены всякие кнопочки. Эта панель - и есть та картинка, о которой идёт речь в этой теме. Может быть будет проще переработать графическую часть, и сделать так, чтобы картинка была прямоугольная? Тогда её можно будет повесить на панель, что было бы намного проще; но заниматься этим ой как не хочится. 

PM MAIL   Вверх
Klin
Дата 25.3.2009, 00:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1938
Регистрация: 7.10.2002
Где: Краснодар

Репутация: 20
Всего: 25



Конечно можно просто изменить подход - сделать изображения квадратными или просто использовать их вне формы.

Существует таймер, он может постоянно рисовать ваши картинки, вопрос в том, что происход процесс прорисовки, в котором канва рисует на экране (это и есть Canvas->Handle = GetDC(0)) изображение, после чего, MediaPlayer прорисовывает на форме видео). Из-за того, что прорисовка происходит методом наложения на экране - возникает подобный эффект. Если бы происходил просчет, а потом прорисовка, вопроса бы и не было.

Сейчас посмотрю, что можно сделать через перехват событий прорисовки, если не удасться добиться "мягкого" эффекта, то это можно будет реализовать имхо только через перехват видео... но тут лично я вам помочь не смогу.

Добавлено через 1 минуту и 26 секунд
Хотя есть простой, но грубый вариант. Можно создать вторую форму и сделать ее прозрачной и на ней расположить нужные изображения. Тормозов вообще не будет, но как и сказал - это грубый вариант.


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
Klin
Дата 25.3.2009, 00:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1938
Регистрация: 7.10.2002
Где: Краснодар

Репутация: 20
Всего: 25



Нет, сообщения ничего не дают. Похоже, что самым рациональным методом будет все-таки вторая форма. Хотя возможно существуют другие компоненты, для воспроизведения видео, которые смогут помочь реализовать задачу.


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
aTBepTKa
Дата 25.3.2009, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 8.3.2009

Репутация: нет
Всего: нет



Да, наверное формы лучше всего будет использовать. Но тут одно но: как сделать форму прозрачной? Конечно, это очень просто когда имеется две отдельные формы. Ставим какой-нибудь цвет фона, такой же цвет в транспарент колор, и всё работает отлично. Но если вторая форма будет дочерней от первой, то тут это не прокатит. И другие схожие способы тоже.

Придумал следующий выход из ситуации: оставить две формы, не зависимыми друг от друга, но вторую "привязать" к первой. И в тот момент, когда пользователь вызывает навигационную панель (эту самую форму), изменять не left, как я планировал сразу, а параметр width. Т.е. не двигать форму, а растягивать её. 

Klin, спасибо за помощ.
PM MAIL   Вверх
Klin
Дата 25.3.2009, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1938
Регистрация: 7.10.2002
Где: Краснодар

Репутация: 20
Всего: 25



Способ реализовать "привязку" очень много, так что тут думаю вопросов возникнуть не должно, но как всегда - существует наш форум.
За помощь - всегда пожалуйста. Только не забудьте пометить вопрос, как решенный ;)


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
xvr
Дата 26.3.2009, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 48
Всего: 223



MediaPlayer играет видео через DirectX (DirectShow). И ему глубоко фиолетово, какие окна будет пытаться GDI расположить поверх его окна вывода. Работать это нормально не будет - готовьтесь поиметь феерверк глюков разных размеров и оттенков  smile 
Если хотите вставлять свои картинки в вывод - пользуйтесь DirectShow напрямую и VideoOverlay (кажется так, нету сейчас DXSDK под рукой)

PM MAIL   Вверх
Klin
Дата 26.3.2009, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1938
Регистрация: 7.10.2002
Где: Краснодар

Репутация: 20
Всего: 25



xvr, вы же понимаете, что существует порядок вывода окон? Поэтому здесь осложнений и глюков возникнуть не должно. Просто это грубый способ... хотя возможно не очень то он и грубый. По началу я думал, что нужно сделать простой логотип поверх отображаемого видео. А нужно реализовать своеобразное меню, то потом, даже если сделать все красиво через DirectShow, то возникнет необходимость заниматься перехватом координат мыши, в зависимости от размера и положения видео. Так что, возможно, это не такой плохой вариант, как я думал.


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
aTBepTKa
Дата 26.3.2009, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 8.3.2009

Репутация: нет
Всего: нет



Цитата(xvr @ 26.3.2009,  11:39)
MediaPlayer играет видео через DirectX (DirectShow). И ему глубоко фиолетово, какие окна будет пытаться GDI расположить поверх его окна вывода. Работать это нормально не будет - готовьтесь поиметь феерверк глюков разных размеров и оттенков  smile 
Если хотите вставлять свои картинки в вывод - пользуйтесь DirectShow напрямую и VideoOverlay (кажется так, нету сейчас DXSDK под рукой)

Может я что-то не правильно сделал, но у меня всё отлично работает. Уже как только не тестировал - всё ок. В качестве доказательства могу экзэшник показать.
PM MAIL   Вверх
xvr
Дата 26.3.2009, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 48
Всего: 223



Цитата(Klin @ 26.3.2009,  15:27)
xvr, вы же понимаете, что существует порядок вывода окон? 

Окна, выводимые через DirectDraw, отрабатываются напрямую драйвером видеокарты, поэтому при их наложении на что-то или наложении на них чего то, не все будет определяться порядком вывода окон  smile Все зависит от карточки. Я видел окна, которые проступали частично через наложенные на них GDI окна.
Цитата

Поэтому здесь осложнений и глюков возникнуть не должно. 
Могут, причем это будет зависеть от аппаратуры.

Добавлено через 1 минуту и 48 секунд
Цитата(aTBepTKa @ 26.3.2009,  18:19)
Цитата(xvr @ 26.3.2009,  11:39)
MediaPlayer играет видео через DirectX (DirectShow). 

Может я что-то не правильно сделал, но у меня всё отлично работает. Уже как только не тестировал - всё ок. 

Вам повезло - ваша видеокатрочка с этим справилась, другая может и не справится
Цитата

В качестве доказательства могу экзэшник показать.
Лучше попробуйте на другой машине

PM MAIL   Вверх
Klin
Дата 26.3.2009, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1938
Регистрация: 7.10.2002
Где: Краснодар

Репутация: 20
Всего: 25



Цитата(aTBepTKa @  26.3.2009,  19:19 Найти цитируемый пост)
Может я что-то не правильно сделал, но у меня всё отлично работает. Уже как только не тестировал - всё ок. В качестве доказательства могу экзэшник показать.

На форуме есть раздел для тестирования программ. 

Цитата(xvr @  26.3.2009,  20:02 Найти цитируемый пост)
Я видел окна, которые проступали частично через наложенные на них GDI окна.


Если возникают проблемы при наложении, то даже если вести прорисовку через DirectDraw проблем будет не мало. На новых машинах подобных глюков не видел, но на старых встречались не раз проблемы с выводом. Обычно подобный эффект возникал, когда были попытки запустить игру, рассчитанную на более мощную конфигурацию. Так же подобный эффект возможен при подвисании компьютера, когда он просто не успевает верно обработать все данные. DirectDraw безусловно уменьшит нагрузку и решит проблемы на старых машинах, но повторюсь, что уже давно подобного эффекта не видел.


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
aTBepTKa
Дата 27.3.2009, 00:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 8.3.2009

Репутация: нет
Всего: нет



Получается что от глюков я не защищён. Наверное придётся отказаться от моего способа управления программой. Запугали меня с этим DirectDraw smile  

Мне тут ещё одна идея в голову пришла. 

Набор компонентов BusinessSkinForm с потдержкой скинов. Думаю многие знакомы с этой штукой. Может быть вместо дополнительной формы засунуть панель, все нужные кнопочки; и потом в качестве скина назначить свои картинки? Панелька - это не окно, можно ли быть увереным что проблем с наложением не будет?
PM MAIL   Вверх
Klin
Дата 27.3.2009, 00:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1938
Регистрация: 7.10.2002
Где: Краснодар

Репутация: 20
Всего: 25



aTBepTKa, никто вас не пугает, нет гарантии, что в то время когда пользователь запустит программу, не будет происходит запуск коллайдера. Но желательно продумать этот момент и программа должна выдать сообщение о том, что программа завершает работу в связи с уничтожением мира.

На самом деле, если вас интересует ответ на ваш новый вопрос, то лучше создать новую тему, ибо нужно помнить о старых и добрых правилах форума. Одна тема - один вопрос.


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
Anikmar
Дата 27.3.2009, 01:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



ИМХО. Если видео просвечивает через более верхние окошки - вот это скорее глюк конкретной системы. Лично у меня, если запустить видео, а сверху положить окошко ничего не просвечивает. Идет видео себе и его частично видно. Ориентироваться на нестандартное поведение некоторых систем так можно в параноика превратиться.
PM MAIL ICQ   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0611 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.