我正在写一个显示大量数学内容的软件。就像在windows窗体中已经很难在标签中设置下标或希腊字母一样,我正在考虑切换到WPF。
目前,我正在寻找最好的方式来渲染一个数学表达式,一个公式或只是一个符号在我的图形用户界面。他们必须显示在标签或绘制的图形/图片。没有实时/即时渲染,但美丽的固定符号。
什么是最好的方法呢?我想,MathML应该得到很好的支持,但我找不到很多关于这方面的建议。我很乐意听到一些建议。
这里是我可以从哪里获得符号的地方(或者我更喜欢什么):
- LaTeX代码(首选!代码已经存在,并且在软件和文档中出现相同的外观将非常棒)
- MathML代码(Word 2007或更高版本中的LaTeX代码-〉Word公式-〉作为普通MathML复制到剪贴板)
SVG
(在Inkscape中渲染LaTeX并导出为XAML)xmcd
文件(Mathcad XML文档。不知道如何实现,但至少它是XML)html
文件(由LaTeX-〉html或Mathcad-〉html编写
我个人不会考虑什么,但也许有好的解决方案:
- 图像(直接导入的
png
-图标、pdf
、dvi
、eps
、svg
) - 符号(如从字符Map表复制粘贴。不喜欢的字体,不会找到所有我需要和公式语法交换不会给)
我认为使用LaTeX,MathML或HTML会很棒,因为它们也可以用于文档。我还可以考虑将计算结果导出到*.tex
文件或完全使用LaTeX内部生成图形(tikz,pgfplots...)
4条答案
按热度按时间sirbozc51#
考虑使用开源WPF-Math库(免责声明:我是它的“当前维护者")。
它可以帮助你在WPF窗口中显示LaTeX表达式。它还使用矢量图形代替位图,所以公式在现代显示器上可以很好地缩放。
mwg9r5ms2#
我会使用纯xaml的方法,使用datatemplates。不需要另外的矢量格式或编辑引擎。你可以为表达式树中的每个表达式使用datatemplates。使用视图框你可以实现拉伸,所以最上面的表达式将比内部表达式大。你的datatemplates将从表达式树生成可视化树。我的意思是在contentpresenter中将有contentpresenter。
最大的优点是,表达式可视化可以是响应和交互式的,就像MS Word或Excel中的数学表达式一样。
如果您不熟悉wpf数据模板,我可以帮助您实现,因为这不是小事。
7rfyedvj3#
据我所知,最好的渲染(在纸上)是从一个矢量文件的后期转换实现的。我更喜欢使用GDI+(系统绘图)或WPF(系统媒体)来渲染一个公式。让我知道我们是否可以在WPF解决方案上合作。
ryhaxcpt4#
我使用https://github.com/std8590/xmcd2cs将大部分Mathcad xmcd文件转换为C#。
然后,我在代码中使用公式,并使输入变量在UI中可用。