gpt4 book ai didi

c# - 如果移动到其他屏幕,WPF MediaElement 将停止播放

转载 作者:可可西里 更新时间:2023-11-01 09:07:37 30 4
gpt4 key购买 nike

我在使用 MediaElement 时遇到了一个非常奇怪的问题,它似乎与多屏幕环境有关:偶尔(我无法每次都重现该问题)当我将 MediaElement 所在的窗口从一个屏幕拖到另一个屏幕时停止播放.这种奇怪的行为也会发生在非常基本的代码中,例如:

public MainWindow()
{
InitializeComponent();
}

protected override void OnSourceInitialized(EventArgs e)
{
media.Play();
base.OnSourceInitialized(e);
}

<Window x:Class="Test.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<MediaElement LoadedBehavior="Manual"
Name="media"
Source="C:\Users\Maurizio\Desktop\Pulp Fiction.avi"/>
</Grid>
</Window>

有没有人遇到(并最终解决)任何类似的问题?

最佳答案

我找到了一个解决方法,在窗口渲染中禁用硬件加速似乎可以解决问题:

using System.Windows.Interop;
...

protected override void OnSourceInitialized(EventArgs e)
{
HwndSource hwndSource = PresentationSource.FromVisual(this) as HwndSource;
HwndTarget hwndTarget = hwndSource.CompositionTarget;
hwndTarget.RenderMode = RenderMode.SoftwareOnly;
media.Play();
base.OnSourceInitialized(e);
}

我感觉不到任何性能差异,而且在任何测试中都没有出现问题...

关于c# - 如果移动到其他屏幕,WPF MediaElement 将停止播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10646543/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com