Поиск:

Ответ в темуСоздание новой темы Создание опроса
> 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   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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