Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Звук, графика и видео > Как проиграть avi на весь экран


Автор: proger 12.11.2004, 19:16
Как проиграть avi на весь экран + со звуком!

Автор: p0s0l 12.11.2004, 20:38
1) Можешь сделать форму с BorderStyle = bsNone, WindowState = wsMaximized, на форму положить Panel1 с Align = alClient,
и у MediaPlayer выставь Display = Panel1
Будет тебе во весь экран фильм smile
Только перед проигрыванием (MediaPlayer1.Play) сделай:
MediaPlayer1.DisplayRect := Rect(0, 0, Screen.Width, Screen.Height);

2) Если форму коверкать не хотца, то можно заменить MediaPlayer1.Play такой командой:
Код
uses MMSystem;

const
 MCI_MCIAVI_PLAY_FULLSCREEN = $02000000;

procedure TForm1.BitBtn1Click(Sender: TObject);
var pp : MCI_PLAY_PARMS;
begin
 pp.dwCallback := Handle;
 pp.dwFrom := 0;
 pp.dwTo := MediaPlayer1.Length;
 MediaPlayer1.DisplayRect := Rect(0, 0, Screen.Width, Screen.Height);
 mciSendCommand (MediaPlayer1.DeviceID, MCI_PLAY, MCI_MCIAVI_PLAY_FULLSCREEN, DWORD(@pp));
end;


3) Проигрывать через DirectShow - не намного сложнее, чем через MediaPlayer, но даёт больше возможностей...
Для примера смотри простой примерчик в DRKB:
Работа с графикой и мультимедиа - DerectX, OpenGL - Что такое DirectShow?

Автор: proger 14.11.2004, 10:11
Как проиграть со звуком через MediaPlayer?

Автор: p0s0l 14.11.2004, 12:39
Через него и так со звуком играется...
Если не слышен звук - значит, скорее всего, нет соответствующего аудиокодека...

Автор: proger 14.11.2004, 17:21
Спасибо!

Автор: proger 14.11.2004, 17:52
Создал сам форму как ты посоветовал, а как теперь сделать, что бы она закрывалась при нажатие ESCAPE или соч. клав. ALT+X?Через procedure Taboutform.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState); не получается???

Автор: p0s0l 14.11.2004, 21:14
Код
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
 Shift: TShiftState);
begin
 if (ssAlt in Shift) and (Key = Ord('X')) then Close;
 if (Key = VK_ESCAPE) then Close;
end;
Возможно, еще надо выставить KeyPreview в True...

Автор: proger 15.11.2004, 11:06
Спасибо, дело было в KeyPreview, я такой жу код писал, а он не пахал, но теперь все ОК!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)