Passer une video en plein écran
Bonjour,
j'utilise donc C++ Builder 6, un mediaplayer, des dialogs, et plusieurs panels...
En fait je fais l'affichage de ma video sur un panel à l'aide du code suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| if(OpenDialog1->Execute()) {
Timer->Enabled=false;
Image->Visible=true;
Panel2->Visible=false;
media_url=OpenDialog1->FileName;
MediaPlayer1->FileName = OpenDialog1->FileName;
if(FileExists(media_url)) {
if(Image->Visible) Image->Visible=false;
if(!Panel2->Visible) Panel2->Visible=true;
Timer->Enabled=true;
MediaPlayer1->Open();
MediaPlayer1->Display = Panel2;
rec = MediaPlayer1->DisplayRect;
rec.Left = Panel2->Left;
rec.Top = Panel2->Top-15;
rec.Bottom=Panel2->Height;
rec.right=Panel2->Width;
MediaPlayer1->DisplayRect = rec;
}
} |
Puis quand je veux passer en plein écran, je gere l'event OnDbClick sur le panel, j'ai essayer de bidouiller un peu pour changer l'align du panel en mettant alClient, mais j'ai l'impression que l'affichage de la video dois faire un refresh, ou un repaint, quelque chose du genre.
Sinon voici quand même le code (oui les valeurs en dur c'est laid, mais je suis en période de teste, on verra pour la suite)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| void __fastcall TForm1::ImageDblClick(TObject *Sender)
{
if(fullscreen)
{
MediaPlayer1->Visible=false;
BitBtn1->Visible=false;
Form1->WindowState=wsMaximized;
Image->Align=alClient;
Panel2->Align=alClient;
fullscreen=false;
}
else
{
MediaPlayer1->Visible=true;
BitBtn1->Visible=true;
Form1->WindowState=wsNormal;
Image->Align=alNone;
Image->Top=3;
Image->Left=16;
Image->Height=480;
Image->Width=649;
Panel2->Align=alNone;
Panel2->Top=16;
Panel2->Left=0;
Panel2->Height=481;
Panel2->Width=681;
fullscreen=true;
}
} |
Voila, any ideas?
Merci