【问题标题】:Media Player Control stretch to fit window size媒体播放器控制拉伸以适应窗口大小
【发布时间】:2013-09-15 18:43:18
【问题描述】:

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

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

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

感谢您的帮助。

【问题讨论】:

  • brush.Stretch = Stretch.None; 有帮助吗?

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


【解决方案1】:

试试这个:

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

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 事件处理程序中设置大小,因为在引发MediaOpened 事件之前NaturalVideoWidthNaturalVideoHeight 不准确。

【讨论】:

  • 完美运行。谢谢。
猜你喜欢
  • 2023-03-15
  • 2012-01-22
  • 1970-01-01
  • 2011-09-03
  • 1970-01-01
  • 1970-01-01
  • 2015-01-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多