如何在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
-图标、pdf
、dvi
、eps
、svg
) - 符号(比如从字符图粘贴的副本。不喜欢字体,找不到我需要的所有内容,也不会提供公式语法的交换)
我认为使用LaTeX、MathML或html会很好,因为它们也可以用于文档。我也可以考虑将计算结果导出到*.tex
文件,或者使用LaTeX(tikz,pgfplot…)完全内部生成图形
考虑使用开源的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中可用。