AxWindowsMediaPlayer作为图像幻灯片

时间:2013-09-05 16:53:40

标签: c# .net axwindowsmediaplayer

AxWindowsMediaPlayer可用于向用户显示图像。如果将URL设置为example.png,则将向用户显示完整的5秒(从Ctlcontrols.currentPosition值中读取)。

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

有没有办法如何使用AxWindowsMediaPlayer向用户显示图像,例如。 37.5秒?有没有简单的方法如何改变不同图像的间隔,或者它是硬编码的常量?

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

Prereq:WinForms,.NET 4.0,适用于Windows 7的WMP 12

非常感谢

1 个答案:

答案 0 :(得分:0)

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

在此之后,请致电wmp.Ctlcontrols.pause()并启动计时器。在timer.Tick事件发布暂停媒体项目。

要释放暂停电话wmp.Ctlcontrols.play(),但要保持良好状态。这将再次触发“newState == 3”。

此外,定时器间隔应减去5秒,并且您不能将滑动设置为小于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();
    }