Frage

Ich suche ein Musik-Personal auf einem .NET (C #) Form zu zeichnen. Ich bin mit Microsoft Visual C # 2010 Express. Ich habe mich gefragt, ob jemand von vorhandenen Code kannte oder vorhandene freie .NET-Bibliotheken, die können helfen, mit diesem. Ich bin auf der Suche sowohl die Höhen und Bass-Schlüssel Personal und Hinzufügen einer Viertelnote zu einigen, wo in den Mitarbeitern zu ziehen. Ich mache ein Piano Tester App mit C # für meinen Sohn. Wenn ich Code es mich, werde ich proably außer Kraft setzen nur die OnPaint-Methode. Aber ich dachte, ich würde sehen, ob jemand etwas freien Code oder Bibliothek mich gesehen hat, zur Verfügung zu beginnen.

War es hilfreich?

Lösung

Es werden die erforderlichen Primitiven musical Ausgabe in dem Unicode-Codesatz zu erzeugen (ab U + 1D100). Zum Beispiel U + 1D11A ist ein 5-zeiliges Personal, U + 1D158 ist ein geschlossene Notenkopf.

Siehe http://www.unicode.org/charts/PDF/U1D100.pdf

.. dann das Problem wird dafür sorgen, dass Sie eine Schrift mit den entsprechenden Glyphen haben enthalten (und den Umgang mit den Fragen der Dinge richtig Abstand, etc.)

Wenn Sie schauen, gedruckte Ausgabe zu erzeugen, sollte man sich Lilypond , die ein OSS Notations Paket, dass verwendet ein Textdateiformat der Musikinhalt und erzeugt dann wunderschön ausgegeben.

zu definieren

Andere Tipps

Sie könnten bei einem Musikbearbeitungsprogramm suchen in C # vor ein paar Jahren geschrieben. Ich sehe etwas viel versprechend: Music Editing-Programm

Das wird ein schwieriges Projekt. Finale verwendet eine benutzerdefinierte Schriftart für Notizen und andere Symbole. Das könnte eine effiziente Möglichkeit, um Ihnen den Einstieg erleichtern.

Sie können beachten Sie auch Niffty . Es ist Open-Source und geschrieben in Java. Sie könnten wahrscheinlich die wichtigen Teile über oder borrow Konzepte umzusetzen.

Edit: Dies kann auch nützlich sein: http://www.c-sharpcorner.com/UploadFile/mgold/musicmaker09242005015433AM/musicmaker.aspx

Wenn man darüber nachdenkt, die Anzahl von Primitiven benötigt Musiknotation zu zeichnen ist ziemlich klein, vor allem, wenn Sie nicht zu extravagant bekommen. Alles, was Sie im Grunde notwendig ist:

  • Vertikale Linien (Hälse)
  • Horizontale Linien (Notenlinien)
  • Ovals voll und skizziert (die Noten)
  • Sharp und Wohnungen sind bereits für Sie mit # und b
  • bereitgestellt

Es gibt einige ausgefallenere Symbole, dass ich wie Höhen weggelassen, Bassschlüssel Noten aber die kann man Käse mit T- und B oder einen schicken Schrift, dass Macht Arbeit finden.

Sehr einfach, Beispielcode für den Anfang:

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);
    }
}

Diese Farbe Funktion würde natürlich viel dynamischer sein: voller Schleifen auf Sammlungen von Primitiven ...

Wenn Sie die Unicode-Musik-Symbole als descibed im 1D100.pdf in einer benutzerdefinierten C # .NET-Anwendung verwenden. Im Folgenden werden Sie den Start:

Ein vorheriger Kommentator erwähnt zu diesem Zweck Java Niffty Tool c # portiert.

Stellt sich heraus, es bereits getan gewesen ist, funktioniert gut.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top