private void Export_Click(object sender, RoutedEventArgs e) { SaveFileDialog sfd = new SaveFileDialog(); sfd.Title = ""; //sfd.InitialDirectory = @"C:\"; sfd.Filter = "NaiveRC歌词文件| *.nrc"; if (sfd.ShowDialog().Value) { string path = sfd.FileName; NRCVIEW.ExportNRCFile(path); } }
public MainWindow() { InitializeComponent(); string lrc = "[00:30.580]编曲 : 郑伟\n\n[00:36.580]如果有人在灯塔\n[00:39.870]拨弄她的头发\n[00:41.980]思念刻在墙和瓦\n[00:45.160]\n[00:45.900]如果感情会挣扎\n[00:48.520]没有说的儒雅\n[00:50.960]把挽回的手放下\n[00:53.910]\n[00:54.560]镜子里的人说假话\n[00:58.530]违心的样子你决定了吗\n[01:02.440]\n[01:03.650]装聋或者作哑 要不我先说话\n[01:11.340]\n[01:15.340]我们的爱情 到这刚刚好\n[01:19.810]剩不多也不少 还能忘掉\n[01:24.960]我应该可以 把自己照顾好\n[01:30.510]\n[01:32.840]我们的距离 到这刚刚好\n[01:37.140]不够我们拥抱 就挽回不了\n[01:41.640]\n[01:42.230]用力爱过的人 不该计较\n[01:48.230]\n[01:58.290]是否要逼人弃了甲\n[02:01.610]亮出一条伤疤\n[02:03.770]不堪的根源在哪\n[02:06.610]\n[02:07.520]可是感情会挣扎\n[02:09.820]没有别的办法\n[02:11.920]它劝你不如退下\n[02:15.660]如果分手太复杂\n[02:18.860]\n[02:19.420]流浪的歌手会放下吉他\n[02:24.450]故事要美必须藏着真话\n[02:29.700]\n[02:31.990]我们的爱情 到这刚刚好\n[02:36.150]剩不多也不少 还能忘掉\n[02:41.200]我应该可以 把自己照顾好\n[02:46.740]\n[02:48.750]我们的距离 到这刚刚好\n[02:52.970]不够我们拥抱 就挽回不了\n[02:57.600]\n[02:58.300]用力爱过的人 不该计较\n[03:03.590]\n[03:05.740]我们的爱情到这刚刚好\n[03:09.860]再不争也不吵 不必再煎熬\n[03:14.530]\n[03:15.100]你可以不用 记得我的好\n[03:20.510]\n[03:22.500]我们的流浪到这刚刚好\n[03:26.640]趁我们还没到 天涯海角\n[03:31.720]我也不是非要去那座城堡\n[03:37.810]\n[03:39.370]天空有些暗了暗的刚刚好\n[03:43.610]我难过的样子就没人看到\n[03:48.850]你别太在意我身上的记号\n[03:58.850]\n[04:07.580]制作 : 薛之谦\n[04:08.580]录音 : 郝宇\n[04:09.580]混音 : 郑伟\n"; //string nrc = File.ReadAllText("test.txt"); NRCVIEW.LoadNRC(lrc); dt = new DispatcherTimer(); 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); }; //对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"); }; }
private void Window_KeyDown(object sender, KeyEventArgs e) { Debug.WriteLine("key:" + e.Key); switch (e.Key) { case Key.Left: NRCVIEW.BackWord(); break; case Key.Right: NRCVIEW.NextWord(); break; case Key.Space: me.Pause(); break; } }
public void UpdatePositionTime() { metime.Text = me.Position.ToString("mm") + ":" + me.Position.ToString("ss"); NRCVIEW.UpdateTime(me.Position.TotalMilliseconds); }