Below is the code I use to play a video. Video is played on a panel but when Start a video it only shows a part of the video how can I fit the video inside the panel? Also how can I get the default size(height and width) of the video so that I can maintain aspect ratio.
Private Sub movieWindow_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles movieWindow.DragDrop
Dim file_names As String() = DirectCast(e.Data.GetData(DataFormats.FileDrop), String())
Dim result As String
For Each file_name As String In file_names
result = file_name.Substring(file_name.LastIndexOf("\") + 1)
frmPlayList.playlist.Items.Add(result)
frmPlayList.playlist2.Items.Add(file_name)
Next file_name
frmPlayList.playlist2.SelectedIndex = frmPlayList.playlist2.Items.Count - 1
filename = frmPlayList.playlist2.SelectedIndex
retVal = mciSendString("play movie", 0, 0, 0)
End Sub
Try this bit of code to automatically resize the movie on the panel on which you are hosting the video. It will also maintain the correct aspect ratio. (Just substitute the name of your panel for "movieWindow")
maxSize is the maximum size you want the video to be. It will be forced to fit within this size.
Call the sub right before you issue the "play movie" command. (edit 3/20/2012 - fixed typo on variable name).
SizeVideoWindow(movieWindow.size)
dim retval as integer = mcisendstring("play movie", 0, 0, 0)
Private Sub SizeVideoWindow(maxSize as size)
Dim ActualMovieSize As Size = getDefaultSize()
Dim AspectRatio As Single = ActualMovieSize.Width / ActualMovieSize.Height
Dim iLeft As Integer = 0
Dim iTop As Integer = 0
Dim newWidth As Integer = maxSize.width
Dim newHeight As Integer = newWidth \ AspectRatio
If newHeight > maxSize.height Then
newHeight = maxSize.height
newWidth = newHeight * AspectRatio
iLeft = (maxSize.width - newWidth) \ 2
Else
iTop = (maxSize.height - newHeight) \ 2
End If
mciSendString("put movie window at " & iLeft & " " & iTop & " " & newWidth & " " & newHeight, 0, 0, 0)
End Sub
Public Function getDefaultSize() As Size
'Returns the default width, height the movie
Dim c_Data As String = Space(128)
mciSendString("where movie source", c_Data, 128, 0)
Dim parts() As String = Split(c_Data, " ")
Return New Size(CInt(parts(2)), CInt(parts(3)))
End Function