我一直在开发一种乐谱软件,我想用它来训练我的音乐学生视奏。
我想知道我是否采取了正确的方法,或者是否有更好的方法。
我已经设法使用支持乐谱的 unicodes 和字体使用如下代码制作谱号、音符和谱表对象:
public static void spaceStaff(Graphics g){
Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
Font font = new Font("Bravura", Font.PLAIN, 32);
g2.setFont(font);
g2.drawString("\uD834\uDD1A", note.spacing-2, staffDistance);
note.spacing = note.spacing + 16;
}
Run Code Online (Sandbox Code Playgroud)
然后我有一个名为 Surface 的类,它将笔记绘制到 JPanel 上:
public class Surface extends JPanel {
@Override
public void paintComponent(Graphics g){
super.paintComponent(g);
staff.spaceStaff(g);
clef.drawGclef(g);//not given in example code above
note.drawCrotchet(g, note.B1);//not given in example code above
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用此代码启动应用程序并显示音乐笔记:
public class SightreadHelper extends JFrame {
public SightreadHelper(){
initUI();
}
private void …Run Code Online (Sandbox Code Playgroud)