1

我有以下代码来加载媒体并使用媒体播放器控件显示它:

MediaPlayer Player = new MediaPlayer();
Player.Open(new Uri(videoURI, UriKind.Absolute));
VideoDrawing aVideoDrawing = new VideoDrawing();
aVideoDrawing.Rect = new Rect(0, 0, 100, 100);
aVideoDrawing.Player = Player;
DrawingBrush brush = new DrawingBrush(aVideoDrawing);
this.Background = brush;

无论我播放的电影大小是多少,它都会拉伸到 1920x1080(窗口大小)。
我希望它是原始的全尺寸,如果高度/宽度小于 1920/1080,它将使视频居中。

由于没有物理控制,我不知道该怎么做......

将感谢您的帮助。

4

1 回答 1

2

尝试这个:

将两个字段添加到类级别:

MediaPlayer Player;
VideoDrawing aVideoDrawing;

在构造函数中添加以下代码:

Player = new MediaPlayer();
Player.MediaOpened += Player_MediaOpened;
Player.Open(new Uri(videoURI, UriKind.Absolute));
aVideoDrawing = new VideoDrawing();                    
aVideoDrawing.Player = Player;
DrawingBrush brush = new DrawingBrush(aVideoDrawing);
brush.Stretch = Stretch.None;
this.Background = brush;

在 MediaOpened 事件处理程序中设置适当的大小:

void Player_MediaOpened(object sender, EventArgs e)
{
    if (Player.NaturalVideoWidth <= 1920 && Player.NaturalVideoHeight <= 1080)
        aVideoDrawing.Rect = new Rect(0, 0, Player.NaturalVideoWidth, Player.NaturalVideoHeight);
    else
        aVideoDrawing.Rect = new Rect(0, 0, 1920, 1080);
}

MediaOpened您必须在事件处理程序中设置大小,因为在引发事件NaturalVideoWidth之前NaturalVideoHeight并不准确。MediaOpened

于 2013-09-15T19:02:41.890 回答