65.9K
CodeProject 正在变化。 阅读更多。
Home

PSAM WPF 控件库

starIconstarIconstarIconstarIconstarIcon

5.00/5 (20投票s)

2010 年 6 月 24 日

BSD

2分钟阅读

viewsIcon

101117

downloadIcon

8236

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 控件库 的文章以获取详细信息。

该控件看起来像这样

psamwpfcontrollibrary/example1.png

因为它是一个 WPF 控件,您可以应用像这样的花哨效果

psamwpfcontrollibrary/example2.png

psamwpfcontrollibrary/example3.png

打印甚至比在 PSAM 控件库 中更简单。 您只需要编写以下代码

PrintDialog dialog = new PrintDialog();
if (dialog.ShowDialog() == true)
{
     dialog.PrintVisual(viewer, "Test");
} 

其中 viewer 是一个 IncipitViewerWPF 控件。 示例打印输出

psamwpfcontrollibrary/example4.png

关注点

PSAM 控件库 移植到 WPF 非常简单。 我对 PSAM 控件库 做了一些更改,即添加了一个新的接口 IIncipitViewer,它代表 IncipitViewer 的方法和属性,然后在 IncipitViewerWPF 类中实现了这个接口。 我还将 ParseXml 方法从 IncipitViewer 移动到一个名为 XmlParser 的新类,这样我就不必在 IncipitViewerWPF 类中重写这个方法。 为了绘制音符和音乐符号,我使用重写的 OnRender 方法和一个 DrawingContext 对象。

© . All rights reserved.