コード例 #1
0
        public MainWindow()
        {
            InitializeComponent();

            Loaded += (e, c) =>
            {
                string nrc = File.ReadAllText("ggh.nrc");
                //string nrc = File.ReadAllText("test.txt");
                NRCView.LoadNRC(nrc);
            };

            dt = new DispatcherTimer();

            //dt.Interval = TimeSpan.FromMilliseconds(0.1);//0.1ms瞬间爆炸
            dt.Interval = TimeSpan.FromMilliseconds(1);

            dt.Tick += (e, c) =>
            {
                UpdatePositionTime();
            };
            me.Source = new Uri(@"薛之谦 - 刚刚好.mp3", UriKind.RelativeOrAbsolute);
            //设置为pause时才能达到启动应用后马上加载音乐以获取总时长
            me.LoadedBehavior = MediaState.Pause;
            //加载音乐后获取总时长
            me.MediaOpened += (e, c) =>
            {
                //将总时长转换为秒单位
                sd.Maximum = (me.NaturalDuration.TimeSpan.Minutes * 60) + me.NaturalDuration.TimeSpan.Seconds;
                //重新设置为手动播放模式,否则无法播放音乐
                me.LoadedBehavior = MediaState.Manual;
            };


            //监听slider的鼠标释放事件,即拖动时不调整音乐的进度,拖动后再调整
            sd.PreviewMouseLeftButtonUp += (e, c) =>
            {
                STime st = GetStime(sd.Value);
                me.Position = new TimeSpan(0, st.m, st.s);

                NRCView.ResetPositionTime(me.Position.TotalMilliseconds);
                //UpdatePositionTime();
            };
            //对slider的值变化监听,修改时可实时显示调整的时间
            sd.ValueChanged += (e, c) =>
            {
                STime    st = GetStime(sd.Value);
                TimeSpan ts = new TimeSpan(0, st.m, st.s);
                metime.Text = ts.ToString("mm") + ":" + ts.ToString("ss");
            };
        }
コード例 #2
0
        public void UpdatePositionTime()
        {
            metime.Text = me.Position.ToString("mm") + ":" + me.Position.ToString("ss") + "/" + me.Position.TotalMilliseconds;

            NRCView.UpdatePositionTime(me.Position.TotalMilliseconds);
        }
コード例 #3
0
 private void PauseButton_Click(object sender, RoutedEventArgs e)
 {
     dt.Stop();
     me.Pause();
     NRCView.Pause();
 }