Visual Studio 用C#定制Windows Media Player

axkjgtzd  于 2023-03-09  发布在  C#
关注(0)|答案(1)|浏览(192)

我在Visual Studio C#中制作基于Windows Media Player的应用程序,我需要以毫秒为单位的媒体时间,我试图复制的媒体播放器是:

但是在Visual Studio C#中,默认的媒体播放器版本1.0是可用的,它具有旧的外观,并且媒体时间仅以秒为单位:

我怎样才能实现媒体播放器如第一张图片所示,它有一个更好的外观和媒体时间在毫秒?
我试过Windows媒体播放器中的选项和网络搜索,但都显示默认媒体播放器。

0pizxfdo

0pizxfdo1#

更新2:

直接创建Windows窗体控件库(. Net Framework 4.8)
使用标签直接覆盖原始时间,并将标签的锚点设置为右下角。
使用计时器控件,默认情况下启用该控件,时间间隔为100毫秒。
使用按钮控件打开要播放的文件,并将锚点设置为左侧和底部。
设置媒体停靠属性为填充。右键单击它,然后单击"移至最后",这样它就不会阻挡其他控件。
锚点设置为防止控件在拉伸时未对齐。

using System;
using System.Windows.Forms;

namespace WindowsFormsControlLibrary1
{
    public partial class UserControl1 : UserControl
    {
        public UserControl1()
        {
            InitializeComponent();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            label1.Text = TimeSpan.FromMilliseconds(axWindowsMediaPlayer2.Ctlcontrols.currentPosition * 1000).ToString(@"mm\:ss\.f");
        }

        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog1 = new OpenFileDialog();
            openFileDialog1.Filter = "Video Files|*.mp4;*.avi;*.wmv;*.*";
            openFileDialog1.Title = "Select a Video File";
            if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                axWindowsMediaPlayer2.URL = openFileDialog1.FileName;
            }
        }
    }
}

只需将其作为dll导入winform程序并使用即可。

更新日期:
使用ElementHost控件将WPF UIElement放置在Windows窗体控件或窗体上。

using System;
using System.Windows.Controls;
using System.Windows.Forms;
using System.Windows.Forms.Integration;

namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        ElementHost elementHost = new ElementHost();
        MediaElement mediaelement = new MediaElement();
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            mediaelement.Source = new Uri(@"C:\Users\Administrator\Downloads\demo1.mp4");
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            textBox1.Text = TimeSpan.FromMilliseconds(mediaelement.Position.TotalMilliseconds).ToString(@"mm\:ss\.f");
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            elementHost.Dock = DockStyle.Fill;
            elementHost.Child = mediaelement;
            this.Controls.Add(elementHost);
        }
    }
}

我使用mediaelement.Position.TotalMilliseconds来获取视频的毫秒数,然后将其格式化为您想要的格式。我使用计时器控件来刷新文本框的文本值。
虽然可以在winforms中使用wpf控件,但我还是希望您直接创建WPF程序。

您可以创建自己的Windows Media Player,但我不知道您使用的是winforms程序还是Wpf程序。
这是Microsoft的官方示例,它使用WPF show。
您可以获取视频时间,并根据需要进行修改。
下面是如何获取时间并设置其格式的示例:

var ti = this.mediaelement.Position.TotalMilliseconds;
TimeSpan timeSpan = TimeSpan.FromMilliseconds(ti);
string formattedTime = timeSpan.ToString(@"hh\:mm\:ss\.fff");
TextBox.Text = formattedTime;

相关问题