begin MediaPlayer1.Display:=MultiPanel; MediaPlayer1.Close; MediaPlayer1.FileName:=FileName; try MediaPlayer1.open;//Ouverture //Récupération de la largeur et hauteur en pixels de la video. mciSendCommand (Mediaplayer1.DeviceID,MCI_WHERE,MCI_ANIM_WHERE_SOURCE,longint(@Rectparm)); DimVideoX:= Rectparm.rc.right; DimVideoY:= Rectparm.rc.Bottom; if (DimVideoY=0) or (DimVideoX=0) then Exit; rate:=1; //on fait en sorte que la zone de projection soit la plus grande possible RapportLongHauteurPixelsVideo:= DimVideoX/DimVideoY; RapportLongHauteurPanel:= MediaPanel.Width/MediaPanel.Height; if (RapportLongHauteurPixelsVideo>RapportLongHauteurPanel) then rate :=MediaPanel.Width/DimVideoX; if (RapportLongHauteurPixelsVideo rate :=MediaPanel.Height/DimVideoY; if (RapportLongHauteurPixelsVideo=RapportLongHauteurPanel) then rate :=MediaPanel.Width/DimVideoY; MediaPlayer1.DisplayRect := Rect(1, 1, trunc(DimVideoX*rate) , trunc(DimVideoY*rate)); {"0, 0" forces resolution autodetect} MediaPlayer1.Play; except MediaPlayer1.Close; ShowMessage('Erreur à l''ouverture du film'); exit; end;
Si on redimentionne le Tpanel, l'image de la vidéo garde ses dimentions. Mais lorsque l'on appelle la fonction visumedia de nouveau, la taille de la vidéo est automatiquement ajustée à la taille du Tpanel