Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Image на panel(НУ ОЧЕНЬ НАДО)  (Прочитано 6991 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Dr.Snipper
Гость
« : 02-03-2005 17:20 » 

Как сделать так, чтобы Image помещенный на Panel был виден во время проигрования на ней видео
Записан
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #1 : 03-03-2005 09:14 » 

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

а вот если нужно на некоем фоне проиграть мультяшку, то варианта два:

1. делать эту мультяшку изначально с учётом фона
2. разбить её на поседовательнсть растров, с которыми можно делать всё, что угодно по определеию. и потом как угодно и на чём угодно выводить.
Записан

Dr.Snipper
Гость
« Ответ #2 : 03-03-2005 12:54 » 

А если нужна "прозрачность"  а за одно скажи как помещать такие рисунки "с прозрачностью" (.tga)
Записан
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #3 : 03-03-2005 13:33 » 

1. может и можно. брать виндовые функции, задавать CI_ANIM_RECT_PARMS, выводить куда-то на спец. окно, в котором отлавливать факт отрисовки и на каждый кадр отрисовывать сверзу своё.... но я бы делал последовательность растров. так проще.

2. только искать стороние библиотеки. дельфя с тга не работает. но что мешает переконвертить ихи в бпм?
Записан

Dr.Snipper
Гость
« Ответ #4 : 03-03-2005 15:06 » 

Скажу точно. Мне нужно что-то вроде окантовки вокруг видео, а поскольку окантовка неровная то и нужна прозрачность(БМП прозрачность не поддерживает)
Записан
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #5 : 04-03-2005 11:34 » new

а..... понял. но прозрачности никакой не надо. нужны регионы. вот смотри.

1. берём форму, на неё кладём панель Panel1, на неё кладём вторую панель - Panel2, делаем ей Align := alClient. далее.

2. кладём MediaPlayer1, наначим какой-нить файл, например, C:\Program Files\Borland\Delphi7\Demos\CoolStuf\speedis.avi, AutoOpen := TRUE.

3. на создание формы - обработчик:
Код:
procedure TForm1.FormCreate(Sender: TObject);
var
  r1, r2: hRGN;
begin
  Panel1.Color := clRed;
  Panel2.Color := clBlue;
  r1 := CreateRectRgn (0, 0, Panel2.Width, Panel2.Height);
  r2 := CreateRoundRectRgn (10, 10, Panel2.Width - 10, Panel2.Height - 10, 30, 30);
  CombineRgn (r1, r1, r2, RGN_DIFF);
  SetWindowRgn (Panel2.Handle, r1, TRUE);
  DeleteObject (r1);
  DeleteObject (r2);
end;

что это обработчик делает. он создат "рамку", в виде квадрата с вырезанным из-него эллипсом, и назачит её как форму второй панели. а вот видео мы ббудем вывдить на первую панель, которая лежит под второй (MediaPlayer1.Display := Panel1).

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

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

Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines