本文将介绍一个旧的.NET项目,该项目最终发展成为一个更大的开源框架Manufaktura.Controls。可以在以下链接中阅读更多关于这个框架的信息:。
PSAM WPF 控制库是PSAM 控制库的WPF版本,包含了用于绘制音乐符号的IncipitViewer 控件。这些音乐符号可以从MusicXml 文件中读取,也可以通过编程方式添加。PSAM WPF 控制库需要PSAM 控制库才能运行,因为它使用了PSAM 控制库的一些类。PSAM WPF 控制库是用C#和XAML在Microsoft Visual Studio Express下编写的。
IncipitViewerWPF控件需要特殊的字体来绘制音符和其他音乐符号。可以创建自己的字体,或者使用附带的Polihymnia字体,该字体基于Ben Laenen的Euterpe字体,并在Sil Open Font Licence下分发。当然,必须在字体目录中安装字体,以便正确显示音符。
可以像在PSAM 控制库中一样加载MusicXml 文件或以编程方式添加音符。有关详细信息,请阅读关于PSAM 控制库的文章。
该控件看起来像这样:
因为它是一个WPF控件,所以可以应用一些花哨的效果,如下所示:
打印比在PSAM 控制库中还要简单。只需要编写以下代码:
C#
PrintDialog dialog = new PrintDialog();
if (dialog.ShowDialog() == true)
{
dialog.PrintVisual(viewer, "Test");
}
其中viewer 是一个IncipitViewerWPF控件。示例打印输出:
将PSAM 控制库移植到WPF相对简单。对PSAM 控制库进行了一些更改,即添加了一个新的接口IIncipitViewer,它代表IncipitViewer 的方法和属性,然后在IncipitViewerWPF 类中实现了这个接口。还把ParseXml 方法从IncipitViewer 移动到了一个名为XmlParser的新类,这样就不必在IncipitViewerWPF 类中重写这个方法。为了绘制音符和音乐符号,使用了一个重写的OnRender 方法和一个DrawingContext 对象。