如何在WPF标签或面板中显示数学表达式

本文关键字:显示 表达式 WPF 标签 | 更新日期: 2023-09-27 18:24:59

我正在编写一个显示大量数学内容的软件。在windows窗体中,在标签中设置下标或希腊字母已经很困难了,我正在考虑改用WPF。

目前,我正在寻找在图形用户界面中呈现数学表达式、公式或符号的最佳方式。它们必须以标签或绘图/图片的形式显示。没有实时/实时渲染,但有漂亮的修复符号。

最好的方法是什么?我认为,MathML应该得到很好的支持,但我找不到太多关于这方面的信息。我很乐意听到一些建议。

这是,我可以从哪里获得我的符号(或者我喜欢什么):

  • LaTeX代码(首选!代码已经存在,在软件和文档中同样的外观将非常棒)
  • MathML代码(Word 2007或更高版本中的LaTeX代码->Word公式->将纯MathML复制到剪贴板)
  • SVG(LaTeX在Inkscape中的一些渲染并导出到XAML)
  • xmcd文件(Mathcad XML文档。不知道怎么做,但至少是XML)
  • html文件(由LaTeX->html或Mathcad->html编写

我个人不会考虑,但也许有很好的解决方案:

  • 图像(直接导入png-图标、pdfdviepssvg
  • 符号(比如从字符图粘贴的副本。不喜欢字体,找不到我需要的所有内容,也不会提供公式语法的交换)

我认为使用LaTeX、MathML或html会很好,因为它们也可以用于文档。我也可以考虑将计算结果导出到*.tex文件,或者使用LaTeX(tikz,pgfplot…)完全内部生成图形

如何在WPF标签或面板中显示数学表达式

考虑使用开源的WPF数学库(免责声明:我是它的"当前维护者")。

它可以帮助您在WPF窗口中显示LaTeX表达式。它还使用矢量图形而不是位图,因此这些公式在现代显示器上的比例会很好。

我会采用使用数据模板的纯xaml方法。不需要其他矢量格式或rednering引擎。您可以为表达式树中的每个表达式使用数据模板。使用视图框可以实现拉伸,因此最上面的表达式将比内部表达式大。数据模板将从表达式树生成可视化树。我的意思是,内容展示者内部会有内容展示者。

最大的优点是,表达式可视化可以是响应性的和交互式的,就像MS Word或Excel中的数学表达式一样。

如果您不熟悉wpf数据模板

,我可以帮助您实现,因为这不是一件小事

据我所见,最好的渲染(在纸面上)是通过从矢量文件的后期转换实现的。我更喜欢使用GDI+(System.Drawing)或WPF(System.Media)来渲染公式。让我知道我们是否可以在WPF解决方案上进行合作。

我使用https://github.com/std8590/xmcd2cs将我的大部分Mathcad xmcd文件转换为C#。

然后我在代码中使用了公式,并使输入变量在UI中可用。