이번에는 음악재생하는 기능을 만들 것이다.
우선 디자인을 대충 만들어주자.
그리고 MediaPlayer 클래스를 이용해 새로운 미디어플레이어 하나를 생성해준다.
미디어 플레이어는 System.Windows.Media를 using 하면 된다.
1 | private MediaPlayer mMediaPlayer = new MediaPlayer(); | cs |
MediaPlayer를 입력하면 전구모양 표시가 뜨는데 전구를 누르면 버튼 하나로 바로 using 할 수 있다.
C#에서의 using은 C, C++의 Include라고 생각하면 된다.
근데 C#에서는 헤더파일 직접 찾을 필요없이 전구를 누르면 자동으로 using 해준다.
이후 음악을 불러와서 재생해주면 된다.
1 2 | mMediaPlayer.Open(new Uri("Furtive Regret.mp3", UriKind.Relative)); mMediaPlayer.Play(); | cs |
잘 만들어져있어서 정말 간편하게 쓸 수 있다.
UriKind의 Relative는 상대주소, Absolute는 절대주소, RelativeOrAbsolute는 둘 다 가능하다.
음악의 정지와 일시정지도 아래처럼 사용하면 된다.
1 2 | mMediaPlayer.Stop(); mMediaPlayer.Pause(); | cs |
볼륨 조절은 0~1까지로 조절할 수 있기때문에 Slider의 최대값을 100으로 변경해 /100을 하여 변경하고
현재 볼륨값을 텍스트로 출력하였다. (max 100)
1 2 3 4 5 | Volume.Maximum = 100.0; Volume.Minimum = 0; mMediaPlayer.Volume = Volume.Value / 100.0; VolumeValue.Content = (int)Volume.Value; | cs |
음악 재생에 따라 슬라이더가 움직이는 것은 스레드를 사용하였다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | public delegate void timeTick(); DispatcherTimer ticks = new DispatcherTimer(); mMediaPlayer.MediaOpened += loadMusiced; private void loadMusiced(object sender, EventArgs e) { MPposition.Maximum = mMediaPlayer.NaturalDuration.TimeSpan.TotalMilliseconds; ticks.Interval = TimeSpan.FromMilliseconds(1); ticks.Tick += ticks_Tick; ticks.Start(); } void ticks_Tick(object sender, object e) { TimeSpan newTimeSpan = mMediaPlayer.Position; MPposition.Value = newTimeSpan.TotalMilliseconds; PositionValue.Content = newTimeSpan.ToString("mm':'ss':'ff"); } | cs |
밀리세컨드마다 value값을 진행시키고 content에 현재값을 표시하였다.
직접 슬라이더를 변경하거나 드래그했을 경우에는 아래와 같이 바꿔주었다.
1 2 3 4 5 6 7 8 9 10 11 12 13 | private void MPposition_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e) { TimeSpan newTimeSpan = mMediaPlayer.Position; PositionValue.Content = newTimeSpan.ToString(@"mm\:ss"); } private void MPposition_DragDelta(object sender, System.Windows.Controls.Primitives.DragDeltaEventArgs e) { mMediaPlayer.Position = new TimeSpan(0, 0, 0, 0, (int)MPposition.Value); TimeSpan newTimeSpan = mMediaPlayer.Position; PositionValue.Content = newTimeSpan.ToString(@"mm\:ss"); } | cs |
음악의 재생 및 현재시간 표시, 볼륨 표시, 슬라이더가 잘 작동한다.
'프로그래밍 공부 > WPF' 카테고리의 다른 글
json 저장, 불러오기 (0) | 2018.04.02 |
---|---|
파일 불러오기, 이미지 출력 및 이동하기 (0) | 2018.04.02 |
캔버스 만들기, 선, 네모, 원 그리기 (그림판) (0) | 2018.04.02 |
계산기 만들기 (0) | 2018.04.02 |
WPF 시작하기 (0) | 2018.04.02 |