PSAM WPF 控件库
PSAM 控件库已移植到 WPF。
引言
更新:这篇文章描述了一个旧的 .NET 项目,它最终演变成更大的开源框架 Manufaktura.Controls。您可以在这里阅读更多信息:https://codeproject.org.cn/Articles/1252423/Music-Notation-in-NET
PSAM WPF 控件库是 PSAM 控件库 的 WPF 版本,包含用于绘制音符的 IncipitViewer
控件,它可以从 MusicXml 文件中读取或以编程方式添加。 PSAM WPF 控件库需要 PSAM 控件库 才能运行,因为它使用了 PSAM 控件库 的一些类。 PSAM WPF 控件库是用 C# 和 XAML 在 Microsoft Visual Studio Express 中编写的。
Using the Code
IncipitViewerWPF
控件需要特殊的字体才能绘制音符和其他音乐符号。您可以创建自己的字体,或者使用包含的 Polihymnia 字体,该字体基于 Ben Laenen 的 Euterpe 字体,并根据 Sil Open Font License 分发。当然,您必须在字体目录中安装该字体才能正确显示音符。
您可以加载 MusicXml 文件或以编程方式添加音符,就像在 PSAM 控件库 中所做的那样。 请阅读关于 PSAM 控件库 的文章以获取详细信息。
该控件看起来像这样
因为它是一个 WPF 控件,您可以应用像这样的花哨效果
打印甚至比在 PSAM 控件库 中更简单。 您只需要编写以下代码
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
对象。