ページ 11

c#でのwaveファイル再生について

Posted: 2011年3月24日(木) 13:55
by mes
SoundPlayerクラスを使ってwaveファイルを再生させるプログラムを作っているのですが、waveファイルを再生させるところまでは作ることができたのですが、waveファイルの再生を一時停止してその停止したところから再生させる処理の実装の仕方が分かりません。
総合開発環境のvisual c# 2010 express を使っています。
どなたか教えて下さい。
ソースコードは下に貼り付けておきます。

コード:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Media;
using System.IO;


namespace SimpleMusicPlayer
{
    public partial class Form1 : Form
    {
        public SoundPlayer PlayMusic = new SoundPlayer();
        public OpenFileDialog OpenFile = new OpenFileDialog();
        private string Wave;

        public Form1()
        {
            InitializeComponent();
        }

        
        private void oPENToolStripMenuItem_Click(object sender, EventArgs e)
        {

            OpenFile.Filter = "wavファイル (*.wav)|*.wav";
            OpenFile.Title = "File open";
            OpenFile.FileName = "";
            OpenFile.ShowReadOnly = true;
            OpenFile.RestoreDirectory = true;
            
            OpenFile.FileOk += new CancelEventHandler(OpenFile_FileOk);

            if (OpenFile.ShowDialog() == DialogResult.OK)
            {
                Wave = OpenFile.FileName;
            }

        }



        private void Play_Click(object sender, EventArgs e)
        {
            PlayMusic.SoundLocation = Wave;
            PlayMusic.Load();

            if (PlayMusic.IsLoadCompleted)
            {
                PlayButton.Visible = false;
                StopButton.Visible = true;
               
                PlayMusic.Play();
            }
            else
            {
                MessageBox.Show("No music file", "Error");
                PlayMusic.Dispose();
                OpenFile.Dispose();
            }
        }

        private void Stop_Click(object sender, EventArgs e)
        {
            StopButton.Visible = false;
            PlayButton.Visible = true;
            
        }

        private void OpenFile_FileOk(object sender, CancelEventArgs e)
        {
            MessageBox.Show("Wave file load is completed", "Complete");
            
        }

        

    }
}

Re: c#でのwaveファイル再生について

Posted: 2011年3月24日(木) 14:19
by mes
コードの記述に足りないところがあったので補足しておきます。

コード:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Media;
using System.IO;


namespace SimpleMusicPlayer
{
    public partial class Form1 : Form
    {
        public SoundPlayer PlayMusic = new SoundPlayer();
        public OpenFileDialog OpenFile = new OpenFileDialog();
        private string Wave;

        public Form1()
        {
            InitializeComponent();
        }

        
        private void oPENToolStripMenuItem_Click(object sender, EventArgs e)
        {

            OpenFile.Filter = "wavファイル (*.wav)|*.wav";
            OpenFile.Title = "File open";
            OpenFile.FileName = "";
            OpenFile.ShowReadOnly = true;
            OpenFile.RestoreDirectory = true;
            
            OpenFile.FileOk += new CancelEventHandler(OpenFile_FileOk);

            if (OpenFile.ShowDialog() == DialogResult.OK)
            {
                Wave = OpenFile.FileName;
            }

        }



        private void Play_Click(object sender, EventArgs e)
        {
            PlayMusic.SoundLocation = Wave;
            PlayMusic.Load();

            if (PlayMusic.IsLoadCompleted)
            {
                PlayMusic.Play();
                PlayButton.Visible = false;
                StopButton.Visible = true;
               
                
            }
            else
            {
                MessageBox.Show("No music file", "Error");
                PlayMusic.Dispose();
                OpenFile.Dispose();
            }
        }

        private void Stop_Click(object sender, EventArgs e)
        {
            PlayMusic.Stop();//この記述がなかったので追加しました
            StopButton.Visible = false;
            PlayButton.Visible = true;
            
        }

        private void OpenFile_FileOk(object sender, CancelEventArgs e)
        {
            MessageBox.Show("Wave file load is completed", "Complete");
            
        }

        

    }
}