как изменить размер видео с помощью mciSendString - PullRequest
0 голосов
/ 07 января 2012

Ниже приведен код, который я использую для воспроизведения видео.Видео воспроизводится на панели, но при запуске видео оно показывает только часть видео, как я могу разместить видео внутри панели?Также, как я могу получить размер по умолчанию (высота и ширина) видео, чтобы я мог поддерживать соотношение сторон.

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

1 Ответ

1 голос
/ 16 марта 2012

Попробуйте этот фрагмент кода, чтобы автоматически изменить размер фильма на панели, на которой вы размещаете видео.Это также будет поддерживать правильное соотношение сторон.(Просто замените название вашей панели на «movieWindow»)

maxSize - это максимальный размер, который вы хотите, чтобы видео было.Он будет вынужден вписаться в этот размер.

Вызовите подпрограмму прямо перед тем, как выполнить команду «play movie».(редактировать 20.03.2012 - исправлена ​​опечатка в имени переменной).

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
...