0

AxWindowsMediaPlayer 可用于向用户显示图像。如果您将 URL 设置为 example.png,图像将显示给用户正好 5 秒(从 Ctlcontrols.currentPosition 值读取)。

虽然图像将向用户显示 5 秒,但“currentMedia.duration”的值等于 0。此外,您无法使用 setItemInfo 将持续时间设置为您想要的值。

有什么方法可以使用 AxWindowsMediaPlayer 向用户显示图像,例如。37.5 秒?有什么简单的方法可以改变不同图像的间隔,还是硬编码的常量?

我确信更好的解决方案是使用不同的组件(例如图片框和计时器),但我正在寻找使用 AxWindowsMediaPlayer 的解决方案。而且我确信可以通过在要求的时间段内更改当前位置来完成所需的行为:-) - 但我想避免这种情况。

先决条件:Windows 7 的 WinForms、.NET 4.0、WMP 12

非常感谢

4

1 回答 1

0

在 PlayStateChange 事件处理程序中检测“newState == 3”(正在播放)。

在此之后,调用wmp.Ctlcontrols.pause()并启动计时器。On timer.Tick 事件释放暂停的媒体项目。

释放暂停呼叫wmp.Ctlcontrols.play(),但要小心。这将再次触发“newState == 3”。

另外,定时器间隔应该减去5秒,并且不能将slide设置为小于5秒。

下面的示例未经测试,但我实现了这样的东西:

    private System.Windows.Forms.Timer timer;

    private void OnPlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e)
    {
        switch (e.newState)
        {
            case 3:
                if (!timer.Enabled)
                {
                    this.player.Ctlcontrols.pause();
                    this.timer.Interval = (37 - 5) * 1000; // 37 seconds 
                    this.timer.Start();
                }
                break;
        }
    }

    protected override void OnTimerTick(object sender, EventArgs e)
    {
        this.player.Ctlcontrols.play();
        this.timer.Stop();
    }
于 2013-09-18T22:12:43.960 回答