Media Player Control拉伸以适合窗口大小

时间:2013-09-15 18:43:18

标签: c# wpf size media-player windows-media-player

我有以下代码来加载媒体并使用Media Player Control显示它:

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,它将使视频居中。

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

非常感谢您的帮助。

1 个答案:

答案 0 :(得分: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事件处理程序中设置大小,因为NaturalVideoWidthNaturalVideoHeightMediaOpened事件被提升之前不准确。