Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.22;
Скачать: CL | DM;

Вниз

TPanel & Canvas   Найти похожие ветки 

 
alless   (2004-08-03 10:51) [0]

Здраствуйте!
В моей прграмме есть такой код

With MediaPlayer1 do begin
................
    Display := Panel1;
...............
end;
Потом в таймере пишу код

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Panel1.canvas.TextOut(10,10,"aaaaa");
end;

Если кордонаты x,y из TextOut поменять на те которые не попадют в квадрат видео, то они отображаются на Canvas-e, а я хочю чтобы они появились на видео но никак не получяется.
Есть идеи как это делается?


 
Smithson ©   (2004-08-03 10:53) [1]

Как ты себе это представдяешь? "Точка в квадрат не попадает, но я хочу, чтобы она там отображалась".


 
alless   (2004-08-03 11:00) [2]

если поставить x,y чтобы строка попала в квадрат строка не появляется на видео (типа субтитры хочю сделать)


 
ssk ©   (2004-08-03 11:05) [3]

я не верю, что это Panel1.canvas.TextOut(10,10,"aaaaa"); будет работать.

может так лучше будет?

type
 TMyPanel = class (TPanel);

begin
 TMyPanel(Panel1).Canvas.TextOut(10, 10, "текст");
end;


 
alless   (2004-08-03 11:09) [4]

2 ssk
да я так и делал, просто не писал весь код, скажи лучше как буквы на изображением появились?


 
Smithson ©   (2004-08-03 11:20) [5]

Для этого нужно получить канвас изображения. Найти окно и по handle  рисовать....


 
alless   (2004-08-03 11:24) [6]

Тогда как получяется что Canvas видео рисуется на Canvas панела? А как получить канвас изображения?


 
Smithson ©   (2004-08-03 11:29) [7]

Видео рисуется на канвасе окна mediaplayer, интегрированного (embedded) в твою форму.


 
KSergey ©   (2004-08-03 11:30) [8]

> alless   (03.08.04 11:24)
> Тогда как получяется что Canvas видео рисуется на Canvas
> панела

Это враки.
Там под вывод видео создается свое окно
Несколько сомневають, что обычными GDI-шными средствами там можно что-то нарисовать
Впрочем - не спец, запросто могу ошибаться.


 
tamroF ©   (2004-08-03 11:46) [9]

procedure TForm1.Timer1Timer(Sender: TObject);
var dc:hdc;
begin
dc:=GetDC(Panel1.Handle);
TextOut(dc,5,5,PChar(Form1.Caption),Length(Form1.Caption));
ReleaseDC(Panel1.Handle,dc);
end;


 
KSergey ©   (2004-08-03 11:49) [10]

> [9] tamroF ©   (03.08.04 11:46)

Это все к чему?


 
tamroF ©   (2004-08-03 19:11) [11]

Черть ё знает...

> чтобы они появились на видео


я так понял, выводимый на канвасе панели текст затирается видео...


 
KSergey ©   (2004-08-04 07:29) [12]

> [11] tamroF ©   (03.08.04 19:11)
> я так понял, выводимый на канвасе панели текст затирается
> видео...

Нет, он туда просто не выводится!!!


 
alless   (2004-08-04 10:42) [13]

2 KSergey ©   (04.08.04 07:29) [12]
Можете сказать почему, или в какую сторону копать?


 
KSergey ©   (2004-08-04 10:54) [14]

> [13] alless   (04.08.04 10:42)
> 2 KSergey ©   (04.08.04 07:29) [12]
> Можете сказать почему


см. [8] KSergey ©   (03.08.04 11:30)


 
П7   (2004-08-04 11:05) [15]


> alless

Я так понимаю, что тебе нужно найти Handle окна, на котором отрисовывается видео. После этого можно будет рисовать на нём используя код из [9]. Но я так же понимаю, что Panel1 это не то окно. MPlayer создаёт своё окно, "присобаченное" к Panel1. Сие окно можно видимо найти в свойства MPlayer1. Или сразу Handle.

Можно пойти ещё другим путём. Поверх окна видео выводить TLabel, задав ему програмно выводится поверх всех компонент.


 
KSergey ©   (2004-08-04 11:09) [16]

> [15] П7   (04.08.04 11:05)
> Поверх окна видео выводить
> TLabel,

Чушь. Лабел - это графический элемент, отрисовываемый на каком-либо окне. Если его покласть на панель - то он опять же не будет на плейере. А покласть лейбл на плейер... Не пробовал, но терзают меня смутные сомнения...

> задав ему програмно выводится поверх всех компонент.

Это как?? Научите меня...


 
П7   (2004-08-04 11:34) [17]


> Это как?? Научите меня...

А вот так:

Label1.BringToFront();


 
KSergey ©   (2004-08-04 11:48) [18]

> [17] П7   (04.08.04 11:34)
> Label1.BringToFront();

Лишь в пределах WinControl (окна) на ктором она лежит. Медиа плейер - другое окно.


 
alless   (2004-08-04 11:57) [19]

Я заметил что MediaPlayer создает свое окошко с Caption-oм имя файла который проигрывается (если не поставить Display := Panel1)
Но я не могу найти ее с помощу функций FindWindow.


 
WondeRu ©   (2004-08-04 12:09) [20]

Используй DSpack
дальше разберешься:


procedure XXXX.OnSampleGrabberBuffer(sender: TObject;
 SampleTime: Double; pBuffer: Pointer; BufferLen: Integer);
var
 BIHeader: tagBitmapInfo;
 MediaType: TAMMediaType;
 xpos, ypos, Index: Integer;
begin
 try
   SampleGrabber.GetConnectedMediaType(MediaType);
   if IsEqualGUID(MediaType.formattype, FORMAT_VideoInfo) then
   begin
     if MediaType.cbFormat = SizeOf(TVideoInfoHeader) then  // check size
       BIHeader.bmiHeader := (PVideoInfoHeader(MediaType.pbFormat)^.bmiHeader);
   end
   else if IsEqualGUID(MediaType.formattype, FORMAT_VideoInfo2) then
   begin
     if MediaType.cbFormat = SizeOf(TVideoInfoHeader2) then  // check size
       BIHeader.bmiHeader := (PVideoInfoHeader2(MediaType.pbFormat)^.bmiHeader);
   end;
 finally
   FreeMediaType(@MediaType);
 end;

 Canvas.Lock;
 try
   try
     SetStretchBltMode(Handle, COLORONCOLOR);
     with BIHeader.bmiHeader do
       begin
         StretchDIBits(Canvas.Handle,
                       0,
                       0,
                       biWidth,
                       biHeight,
                       0,
                       0,
                       biWidth,
                       biHeight,
                       pBuffer,
                       BIHeader,
                       DIB_RGB_COLORS,
                       SRCCOPY);
       end;
             TextOut(Handle,
                     5,
                     5,
                     PAnsiChar(<text>),
                     1);
   except
   end;
 finally
   Canvas.Unlock;
 end;
end;



Страницы: 1 вся ветка

Текущий архив: 2004.08.22;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.036 c
1-1091789377
xman
2004-08-06 14:49
2004.08.22
TreeView


3-1091010344
Рооо
2004-07-28 14:25
2004.08.22
как показать нормально текстовой файл в DBGrid-e ?


1-1092140318
Рафик
2004-08-10 16:18
2004.08.22
QUICKREPORT


14-1091451887
Prohodil Mimo
2004-08-02 17:04
2004.08.22
О холодильниках


1-1092062092
sdw_syscoder
2004-08-09 18:34
2004.08.22
Перевод каретки и строки #13#10 (0D/0A)