我没能找到解决我在另一个问题中询问的错误:MediaElements don't work as expected

所以,我决定找到一种不同的方式来运行声音文件 . 经过一番搜索,我发现了一种可能的方法 .

我需要创建一个新的WMPLib.WindowsMediaPlayer对象,然后为其分配相关的文件路径,该路径应该从原始媒体元素中获取 .

string path = music_path[vcoThis.Name.ToString()];
 wplayer_music.controls.stop();
 wplayer_music.URL = path.ToString();
 wplayer_music.controls.play();

这样,声音加载并正确播放 . 但是,这并没有完全解决问题 .

1)首先,它适用于音频,但不适用于视频文件 . 加载视频文件时,我只能听到相关的声音,但看不到任何视觉效果 . 为什么会这样,以及如何解决?我不确定我是对的,但也许我需要为这个WMPLib.WindowsMediaPlayer指定宽度,高度和边距?如果是这样,我找不到分配新值的方法 .

我试过了:

WMPLib.WindowsMediaPlayer.width = 1600;

但我得到的错误是没有这样的定义 . 在我的游戏中,屏幕尺寸可能会有所不同,具体取决于所需的分辨率,因此我需要选择编辑这些值 .

2)第二 - 许多MediaElements都有“MediaOpened”,“MediaEnded”和“MouseDown”等事件 . 有没有办法将这些事件“复制”到WMPLib.WindowsMediaPlayer?

我不知道在代码中编写它的正确方法,所以为给出如此“粗略”的例子道歉 .

我想要的是:

wplayer_music.MediaEndedEvent = vcoThis.MediaEndedEvent;

而我不想要的是:让我们考虑一下vcoThis的MediaEnded激活名为“EndThisAudio”的虚空 .

我不希望这样:

wplayer_music.MediaEndedEvent = EndThisAudio();

再次,为如此丑陋的描述道歉 . 我的意思是,我想从“vcoThis”中获取相关事件,当“vcoThis”可以是不同的MediaElements时,他们可以有不同的事件 . 为所有情况分配一个相同的事件\ void将无法满足我的需求 .

Summary:

我需要了解如何:

1)为WMPLib.WindowsMediaPlayer分配新的宽度,高度和边距

2)将相关事件从相关MediaElement“复制”到WMPLib.WindowsMediaPlayer .