Se ci pensate, il numero di primitive necessarie per disegnare la notazione musicale è abbastanza piccolo, specialmente se non siete troppo fantasiosi. Tutto ciò che fondamentalmente serve è:
- linee verticali (nota deriva)
- linee orizzontali (linee personale)
- ovali pieni e delineati (note che rappresentano)
- Sharp e appartamenti sono già forniti per voi con # e b
ci sono alcuni simboli fantasiosi che ho omesso, come alti, marchi chiave di basso, ma quelli si potrebbe formaggio con T e B o trovare un font più elaborato che potrebbe funzionare.
Molto semplice, il codice di esempio per iniziare:
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Drawing.Drawing2D;
public partial class MusicForm : Form
{
public MusicForm()
{
InitializeComponent();
}
private int _staffHght = 15;
private int _noteHght = 12;
private int _noteWdth = 20;
private Pen _notePen = new Pen(Color.Black, 2);
private Brush _noteBrush = Brushes.Black;
private void musicPanel_Paint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
g.SmoothingMode = SmoothingMode.HighQuality;
// draw some staff lines
for (int i = 1; i < 6; i++)
g.DrawLine(Pens.Black, 0, i * _staffHght, musicPanel.Width, i * _staffHght);
// draw four semi-random full and quarter notes
g.DrawEllipse(_notePen, 10, 2 * _staffHght, _noteWdth, _noteHght);
g.DrawEllipse(_notePen, 50, 4 * _staffHght, _noteWdth, _noteHght);
g.FillEllipse(_noteBrush, 100, 2 * _staffHght, _noteWdth, _noteHght);
g.FillEllipse(_noteBrush, 150, 4 * _staffHght, _noteWdth, _noteHght);
}
}
Questa funzione vernice sarebbe ovviamente dovuto essere molto più dinamici: pieno di loop sulle vostre collezioni di primitive ...
fonte
2010-10-29 14:18:57
Wow buon progetto. Sembra interessante! –
+1 per il figlio :-) – chiccodoro
Ho accettato la risposta Unicode, l'unica cosa che sto ancora cercando di lavorare è come capovolgere la nota del quarto. – JeffJak