在好例子网,分享、交流、成长!
您当前所在位置:首页C# 开发实例Windows系统编程 → 五线谱学习软件源码(C# )

五线谱学习软件源码(C# )

Windows系统编程

下载此实例
  • 开发语言:C#
  • 实例大小:0.11M
  • 下载次数:33
  • 浏览次数:988
  • 发布时间:2017-11-26
  • 实例类别:Windows系统编程
  • 发 布 人:guchew
  • 文件格式:.rar
  • 所需积分:2

实例介绍

【实例简介】

一个用于学习五线谱的小软件。


  五线谱学习软件,用于钢琴初学者对五线谱的记忆。

shengtao.guo@qq.com


【实例截图】

from clipboard
【核心代码】

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

/*
    本源代码版权归郭胜涛所有,仅限于学习交流,切勿用于商业用途,
    该程序中所涉及的媒体资源文件均来源于互联网,本软件作者不承担相应的法律责任!
     任何疑问请联系  shengtao.guo@qq.com
*/

namespace Study
{
    public partial class FormMain : Form
    {
        public FormMain()
        {
            InitializeComponent();
            double delt = 6;
            lowNotes.Clear();
            lowNotes.Add(new Note( NoteName.C, AddLineType.adddown2));
            lowNotes.Add(new Note( NoteName.D, AddLineType.adddown2));
            lowNotes.Add(new Note( NoteName.E, AddLineType.adddown1));
            lowNotes.Add(new Note( NoteName.F));
            lowNotes.Add(new Note( NoteName.G));
            lowNotes.Add(new Note(NoteName.A));
            lowNotes.Add(new Note( NoteName.B));
            lowNotes.Add(new Note( NoteName.C));
            lowNotes.Add(new Note( NoteName.D));
            lowNotes.Add(new Note( NoteName.E));
            lowNotes.Add(new Note( NoteName.F));
            lowNotes.Add(new Note( NoteName.G));
            lowNotes.Add(new Note( NoteName.A));
            lowNotes.Add(new Note( NoteName.B));
            lowNotes.Add(new Note( NoteName.C, AddLineType.addup1));
            lowNotes.Add(new Note( NoteName.D, AddLineType.addup2));
            lowNotes.Add(new Note(NoteName.E, AddLineType.addup2));
            for (int i = 0; i < lowNotes.Count; i  )
                lowNotes[i].YPosition = 270 - (i * delt);

            upNotes.Clear();
            upNotes.Add(new Note( NoteName.A, AddLineType.adddown2));
            upNotes.Add(new Note(NoteName.B, AddLineType.adddown2));
            upNotes.Add(new Note(NoteName.C, AddLineType.adddown1));
            upNotes.Add(new Note( NoteName.D));
            upNotes.Add(new Note( NoteName.E));
            upNotes.Add(new Note( NoteName.F));
            upNotes.Add(new Note( NoteName.G));
            upNotes.Add(new Note( NoteName.A));
            upNotes.Add(new Note( NoteName.B));
            upNotes.Add(new Note(NoteName.C));
            upNotes.Add(new Note(NoteName.D));
            upNotes.Add(new Note(NoteName.E));
            upNotes.Add(new Note(NoteName.F));
            upNotes.Add(new Note(NoteName.G));
            upNotes.Add(new Note(NoteName.A, AddLineType.addup1));
            upNotes.Add(new Note(NoteName.B, AddLineType.addup2));
            upNotes.Add(new Note(NoteName.C, AddLineType.addup2));

            for (int i = 0; i < upNotes.Count; i  )
                upNotes[i].YPosition = 140 - (i * delt);

            randon = new Random(lowNotes.Count);
        }

        private IList<Note> lowNotes = new List<Note>();

        private IList<Note> upNotes = new List<Note>();

        private Pen defaultLinePen = new Pen(Color.Black, 1);

        private Random randon = null;

        private Note currentNode;

        private void drawLowNode(Graphics g)
        {
            int ind = randon.Next(lowNotes.Count);

            currentNode = lowNotes[ind];
            float y = (float)currentNode.YPosition - 1;
            float x = 120;
            g.DrawImage(Properties.Resources.note,
              new PointF(x, y
                    - (Properties.Resources.note.Height / 2)));
            if (currentNode.addLineType == AddLineType.addup2)
            {
                g.DrawLine(defaultLinePen, new PointF(x - 10, 186),
                    new PointF(x   30, 186));
                g.DrawLine(defaultLinePen, new PointF(x - 10, 174),
                    new PointF(x   30, 174));
            }
            if (currentNode.addLineType == AddLineType.addup1)
            {
                g.DrawLine(defaultLinePen, new PointF(x - 10, 186),
                    new PointF(x   30, 186));
            }
            if (currentNode.addLineType == AddLineType.adddown1)
            {
               g.DrawLine(defaultLinePen, new PointF(x - 10, 258),
                    new PointF(x   30, 258));
            }
            if (currentNode.addLineType == AddLineType.adddown2)
            {
                g.DrawLine(defaultLinePen, new PointF(x - 10, 258),
                    new PointF(x   30, 258));
                g.DrawLine(defaultLinePen, new PointF(x - 10, 270),
                    new PointF(x   30, 270));
            }
        }

        private void drawoUpNode(Graphics g)
        {
            int ind = randon.Next(lowNotes.Count);
            float x = 120;
            currentNode = upNotes[ind];
            float y = (float)currentNode.YPosition - 1;
            g.DrawImage(Properties.Resources.note,
              new PointF(x, y
                    - (Properties.Resources.note.Height / 2)));

            if (currentNode.addLineType == AddLineType.addup2)
            {
                g.DrawLine(defaultLinePen, new PointF(x - 10, 44),
                    new PointF(x   30, 44));
                g.DrawLine(defaultLinePen, new PointF(x - 10, 56),
                    new PointF(x   30, 56));
            }
            if (currentNode.addLineType == AddLineType.addup1)
               g.DrawLine(defaultLinePen, new PointF(x - 10, 56),
                    new PointF(x   30, 56));
            if (currentNode.addLineType == AddLineType.adddown1)
                g.DrawLine(defaultLinePen, new PointF(x - 10, 128),
                    new PointF(x   30, 128));
            if (currentNode.addLineType == AddLineType.adddown2)
            {
                g.DrawLine(defaultLinePen, new PointF(x - 10, 128),
                    new PointF(x   30, 128));
                g.DrawLine(defaultLinePen, new PointF(x - 10, 140),
                    new PointF(x   30, 140));
            }
        }

      
        private void pictureBox1_Paint(object sender, PaintEventArgs e)
        {
            //draw lownote
            if (radioButtonH.Checked)
                drawoUpNode(e.Graphics);
            if (radioButtonL.Checked)
                drawLowNode(e.Graphics);

            if (radioButtonHL.Checked)
            {
                int r = randon.Next(10);
                if(r % 2 == 0)
                    drawLowNode(e.Graphics);
                else
                    drawoUpNode(e.Graphics);
            }
           
        }

        private int count = 0;

        private int right = 0;

        private int wrong = 0;

        private void newNote()
        {
            this.pictureBox1.Refresh();
            count  ;
            this.labelRight.Text = "正确:"   right.ToString();
            this.labelWrong.Text = "错误:"   wrong.ToString();
            this.labelCount.Text = "总数:"   count.ToString();
        }

        private void button8_Click(object sender, EventArgs e)
        {
            count = 0;
            right = 0;
            wrong = 0;
            this.pictureBox2.Image = null;
            newNote();
        }

        private void input(NoteName baseName)
        {
            if (currentNode != null)
            {
                if (currentNode.baseName == baseName)
                {
                    right  ;
                    this.labelErro.Text = "";
                    this.pictureBox2.Image = Properties.Resources.right;
                    newNote();
                }
                else
                {
                    wrong  ;
                    this.pictureBox2.Image = Properties.Resources.error;
                    this.labelErro.Text = "应为 "   currentNode.baseName.ToString();
                }
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            input(NoteName.C);
        }

        private void button2_Click(object sender, EventArgs e)
        {
            input(NoteName.D);
        }

        private void button3_Click(object sender, EventArgs e)
        {
            input(NoteName.E);
        }

        private void button4_Click(object sender, EventArgs e)
        {
            input(NoteName.F);
        }

        private void button5_Click(object sender, EventArgs e)
        {
            input(NoteName.G);
        }

        private void button6_Click(object sender, EventArgs e)
        {
            input(NoteName.A);
        }

        private void button7_Click(object sender, EventArgs e)
        {
            input(NoteName.B);
        }        
    }
}

实例下载地址

五线谱学习软件源码(C# )

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警