控制和输出音乐笔记

本文关键字:笔记 音乐 输出 控制 | 更新日期: 2023-09-27 17:49:15

我正在编写一个程序,以便单击一个按钮,并根据您保持鼠标向下的时间打印链接的笔记。我的问题是,第一次点击工作正常,但当我坚持第二次它不更新,这是驱使我疯了。任何帮助都将不胜感激。下面找到我使用的以下代码。由于

对于Form1:

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;
namespace NoteShape
{
    public partial class Form1 : Form
    {
        public int duration = 0;
        MusicNote mn;
        public Form1()
        {
            InitializeComponent();
        }
        private void timer1_Tick(object sender, EventArgs e)
        {
            duration++;
        }
        private void button1_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                timer1.Enabled = true;
                duration = 0;
            }
        }
        private void button1_MouseUp(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                timer1.Enabled = false;
            }
            duration = duration % 20;
            string bNoteShape = "";
            if (duration >= 12)
            {
                bNoteShape = "SemiBreve";
            }
            if ((duration >= 6) && (duration <= 11))
            {
                bNoteShape = "Minim";
            }
            if ((duration >= 3) && (duration <= 5))
            {
                bNoteShape = "Crotchet";
            }
            if ((duration >= 1) && (duration <= 2))
            {
                bNoteShape = "Quaver";
            }
            if (duration == 0)
            {
                bNoteShape = "SemiQuaver";
            }

            mn = new MusicNote(1, bNoteShape);
            MessageBox.Show(bNoteShape);
            this.Controls.Add(this.mn);
        }
    }
}

对应的类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing;
namespace NoteShape
{
    class MusicNote: PictureBox
    {
        public string path = "ImagesName''";
        public int pitch;
        public string noteShape;
        public MusicNote(int iPitch, string iNoteShape) : base()
        {
            pitch = iPitch;
            noteShape = iNoteShape;
            Location = new Point(150, 50);
            Size = new Size(40, 40);
            Bitmap bmp1 = new Bitmap(path + noteShape + ".bmp");
            Image = bmp1;
            BackColor = Color.Transparent;
        }
        protected override void OnPaint(PaintEventArgs pe)
        {
            base.OnPaint(pe);
        }
    }
}

控制和输出音乐笔记

我刚刚在Visual Studio 2010中尝试了您的代码"原样",没有任何问题。我唯一改变的是我注释了位图,因为我没有它们,但我选择了黑色的背景色来看到它。

 //Bitmap bmp1 = new Bitmap(path + noteShape + ".bmp");
 //Image = bmp1;
 BackColor = Color.Black;

另外,我把timer1与500毫秒的间隔,因为我不知道你的间隔是多少。

我可以一遍又一遍地做,然后消息框弹出,里面有正确的东西!你可以再试一次,或者更新你的代码,因为现在,根本没有问题。

编辑

你需要在你的button1_MouseUp

中添加这个
this.Controls.Add(mn);
mn.BringToFront();

画框画在前一个画框的后面。

您正在创建一个新的笔记,但每次都将其放置在相同的位置。

您应该编辑现有的/单击的注释或定位新的注释