C# -写个可可图片播放器

C# -写个可可图片播放器

效果

在这里插入图片描述

程序分析

  • 资源准备
    • 准备两组图,一组汽车图(5张);一组动物图(5张)
    • 将图片都添加到项目的资源文件中;项目右侧有个Resources.resx文件,点击出现左侧界面,选中添加资源,选则添加现有文件,从本地文件中选则下载好的两组图片。 添加完成后,项目中会自动生成一个文件夹里面都是刚添加的图片文件

在这里插入图片描述

  • 准备一个背景音乐(.wav 格式的)
    • 添加到项目的资源文件中(与添加图片一样的操作方法)

在这里插入图片描述

  • 添加一个PictureBox控件,区域拉大点,用来播放图片
    在这里插入图片描述
  • 左侧添加两个按钮,接入动物、接入汽车
    • 接入动物:生成一个动物图片对象,用来播放动物相关图片
    • 接入汽车:生成一个汽车图片对象,用来播放汽车相关图片

在这里插入图片描述

  • 下面需要三个Button 按钮,上一张、开始/停止、下一张;代码逻辑如下
    • 上一张:将上一张图片赋值给pictureBox控件,并判断如果当前是第一张,则上一张是最后一张
    • 下一张:将上一张图片赋值给pictureBox控件,并判断如果当前是最后一张,则下一张是第一张
    • 开始/停止:点击开始则进行自动播放(打开定时器开关);点击停止则关闭自动播放(关掉定时器开关)
    • 以上按钮都需要自动生成点击事件
      在这里插入图片描述
  • 主窗体添加一个load事件,用来初始化窗体,代码逻辑如下
    • 加载背景音乐
    • 设置窗体启动默认播放的图片
  • 定义一个 图片的接口,接口拥有上一张、下一张、播放的功能,再建立一个动物图和汽车图来实现这个接口,这样一来接口中的几个方法都会复写一下


直接上代码


主窗体类, 初始化窗体

  • 加载背景音乐
  • 设置窗体启动默认播放的图片
// 图片资源
 IPicture pic;
 
 private void Form1_Load(object sender, EventArgs e)
{
   // 加载背景音乐
    SoundPlayer backBgm = new SoundPlayer();
    backBgm.Stream = Properties.Resources._02__远辰落身旁;
    backBgm.PlayLooping();

    // 默认接入动物图片
    pic = new Animal();
}

播放按钮逻辑

  • 点击开始则进行自动播放(打开定时器开关)
  • 点击停止则关闭自动播放(关掉定时器开关)
private void button1_Click(object sender, EventArgs e)
{
    // 退出自动播放,关闭定时任务
    bool result = this.timer1.Enabled;
    if (result)
    {
        this.timer1.Enabled = false;
        this.button1.Text = "开始";
    }
    else
    {
        this.timer1.Enabled = true;
        this.button1.Text = "停止";
    }
}

定时器

private void timer1_Tick(object sender, EventArgs e)
{
    // 播放图片
    this.pictureBox1.Image = pic.PlayPic();
}

上一张、下一张图片逻辑

  • 将上一张图片赋值给pictureBox控件,并判断如果当前是第一张,则上一张是最后一张
  • 将下一张图片赋值给pictureBox控件,并判断如果当前是最后一张,则下一张是第一张
private void button2_Click(object sender, EventArgs e)
{
    //如果当前是最后一张图,下一张就是第一张图
    this.pictureBox1.Image = pic.NextPic();
}

private void button3_Click(object sender, EventArgs e)
{
    //如果当前是第一张图,上一张就是最后一张图
    this.pictureBox1.Image = pic.PrePic();
}

接入动物和接入车辆图片按钮

  • 生成一个动物图片对象,用来播放动物相关图片
  • 生成一个汽车图片对象,用来播放汽车相关图片
private void button4_Click(object sender, EventArgs e)
{
       // 接入动物
       pic = new Animal();
   }

   private void button5_Click(object sender, EventArgs e)
{
       // 接入汽车
       pic = new CarPic();
   }
}

IPicture 接口

接口拥有上一张、下一张、播放的功能,再建立一个动物图和汽车图来实现这个接口,这样一来接口中的几个方法都会复写一下

namespace 可可图片播放器
{
    interface IPicture
    {
        // 图片初始化
        void InitPic();

        //播放图片
        Image PlayPic();

        // 上一张图片
        Image PrePic();

        // 下一张图片
        Image NextPic();
    }
}

Animal动物图片类

namespace 可可图片播放器
{
    class Animal : IPicture
    {
        // 图片资源
        Image[] imgArray = new Image[5];
        int index = 0;

        public Animal()
		{
            // 初始化图片
            InitPic();
        }


        public void InitPic()
		{
            // 加载图片资源
            imgArray[0] = Properties.Resources._1;
            imgArray[1] = Properties.Resources._2;
            imgArray[2] = Properties.Resources._3;
            imgArray[3] = Properties.Resources._4;
            imgArray[4] = Properties.Resources._5;
        }

        public Image NextPic()
		{
            //如果当前是最后一张图,下一张就是第一张图
            if (index == imgArray.Length - 1)
            {
                index = 0;
            }
            else
            {
                // 播放下一张图片
                index = index + 1;
            }
            return imgArray[index];
        }

        public Image PlayPic()
		{
            // 播放图片
            Image image = imgArray[index];
            index++;

            // 如果播放到最后了,就重新开始播放
            if (index >= imgArray.Length)
            {
                index = 0;
            }
            return image;
        }

        public Image PrePic()
		{
            //如果当前是第一张图,上一张就是最后一张图
            if (index == 0)
            {
                index = imgArray.Length - 1;
            }
            else
            {
                // 播放上一张图片
                index = index - 1;
            }
            return imgArray[index];
        }
    }
}

CarPic类

namespace 可可图片播放器
{
    class CarPic : IPicture
    {
        // 图片资源
        Image[] imgArray = new Image[5];
        int index = 0;

        public CarPic()
		{
            // 初始化图片
            InitPic();
        }

        public void InitPic()
		{
            // 加载图片资源
            imgArray[0] = Properties.Resources.c1;
            imgArray[1] = Properties.Resources.c2;
            imgArray[2] = Properties.Resources.c3;
            imgArray[3] = Properties.Resources.c4;
            imgArray[4] = Properties.Resources.c5;
        }

        public Image NextPic()
		{
            //如果当前是最后一张图,下一张就是第一张图
            if (index == imgArray.Length - 1)
            {
                index = 0;
            }
            else
            {
                // 播放下一张图片
                index = index + 1;
            }
            return imgArray[index];
        }

        public Image PlayPic()
		{
            // 播放图片
            Image image = imgArray[index];
            index++;

            // 如果播放到最后了,就重新开始播放
            if (index >= imgArray.Length)
            {
                index = 0;
            }
            return image;
        }

        public Image PrePic()
		{
            //如果当前是第一张图,上一张就是最后一张图
            if (index == 0)
            {
                index = imgArray.Length - 1;
            }
            else
            {
                // 播放上一张图片
                index = index - 1;
            }
            return imgArray[index];
        }
    }
}

微信公众号同名

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个用C#实现的简单音乐播放器: ```csharp using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.IO; using WMPLib; namespace MusicPlayer { public partial class Form1 : Form { // 创建Windows Media Player对象 private WindowsMediaPlayer player; public Form1() { InitializeComponent(); // 初始化Windows Media Player player = new WindowsMediaPlayer(); // 设置播放器属性 player.settings.autoStart = false; player.settings.volume = 50; player.PlayStateChange += new _WMPOCXEvents_PlayStateChangeEventHandler(player_PlayStateChange); // 加载音乐列表 LoadMusicList(); } // 加载音乐列表 private void LoadMusicList() { // 清空原有列表 listBox1.Items.Clear(); // 获取音乐文件夹路径 string path = Environment.GetFolderPath(Environment.SpecialFolder.MyMusic); // 遍历音乐文件夹下的所有音乐文件 foreach (string file in Directory.GetFiles(path, "*.mp3")) { // 添加到列表中 listBox1.Items.Add(Path.GetFileName(file)); } } // 播放音乐 private void PlayMusic(string path) { // 设置播放器的URL player.URL = path; // 开始播放 player.controls.play(); // 更新状态栏 toolStripStatusLabel1.Text = "正在播放:" + Path.GetFileName(path); } // 播放按钮的点击事件 private void button1_Click(object sender, EventArgs e) { if (listBox1.SelectedIndex >= 0) { // 获取选中项的完整路径 string path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyMusic), listBox1.SelectedItem.ToString()); // 播放音乐 PlayMusic(path); } } // 暂停按钮的点击事件 private void button2_Click(object sender, EventArgs e) { player.controls.pause(); } // 停止按钮的点击事件 private void button3_Click(object sender, EventArgs e) { player.controls.stop(); } // 列表框的选中项改变事件 private void listBox1_SelectedIndexChanged(object sender, EventArgs e) { // 如果没有选中项,则禁用播放按钮 if (listBox1.SelectedIndex < 0) { button1.Enabled = false; } else { button1.Enabled = true; } } // 播放状态改变事件 private void player_PlayStateChange(int NewState) { // 如果播放完毕,则更新状态栏 if ((WMPPlayState)NewState == WMPPlayState.wmppsMediaEnded) { toolStripStatusLabel1.Text = "播放完毕"; } } } } ``` 这个程序使用了Windows Media Player对象来实现音乐的播放、暂停和停止功能。它还可以从Windows音乐文件夹中自动加载所有MP3文件,并将它们添加到列表框中。当用户选择一个文件并点击“播放”按钮时,程序将使用Windows Media Player对象播放选定的音乐文件。程序还会更新状态栏以显示当前播放的音乐文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值