如何在 WPF 或 WinForms 中呈现公式

Posted

技术标签:

【中文标题】如何在 WPF 或 WinForms 中呈现公式【英文标题】:How to render a formula in WPF or WinForms 【发布时间】:2012-02-12 12:39:08 【问题描述】:

2018 年更新 TL;DR;用于 WPF 的 LaTEX https://github.com/ForNeVeR/wpf-math

原始问题 我需要一种在 Windows 窗体或 WPF 中绘制数学公式的方法。一些“FormulaTextBox”控件正是我所需要的。

我问的不是 LaTEX 的完整实现,但至少是 RichTextBox 之外的东西,包括分割线、平方根等。

【问题讨论】:

这个article 看起来有帮助 乍一看很有趣。谢谢!我明天会审查它并在这里发布。 【参考方案1】:

这是一个选项列表,从几个在线网页中提取,以及 SO 上的 fewsimilarquestions

WPF-Math,一个用于渲染数学相关 TeX 标记的 WPF 库。 gNumerator 是一个 WinForms 控件,它呈现 MathML。它是原生 C#,但似乎很旧。 Math Expressions,用于显示和编辑数学方程式的商业 WinForms 控件。 注意:不是免费的 C# WPF 控件有一个unofficial port of JMathTex Windows 版本的 LaTex 编辑器Lyx 使用一个名为MikTex 的本机库,您可以查看一下。我在某处看到提到 tex4ht 包将数学方程式渲染为图像 MimeTex/MathTex,正如你已经提到的 您也可以使用WebBrowser 控件,并在本地包含one of many javascript libraries 用于渲染LaTex。 您可以将工作抵押到 Microsoft Word 上(Example - 要求用户安装 MS Word!

【讨论】:

+1 你可能应该得到这个赏金......在我发布答案之前我没有看到你的 WebBrowser 控制点。 WPF-Math 现在处于活动状态。我已经 fork 到 GitHub,联系了原作者,得到了他的祝福。见github.com/ForNeVeR/wpf-math【参考方案2】:

也许您可以使用Wolfram Alpha API 来检索图像。

【讨论】:

感谢您的回复。但它不是仅限网络吗?如何嵌入东西作为stadalone winforms 控件?能否请您提供一些简短的提示或代码? 有点赌博,但您可以使用 WebRequest 从您的 winforms 应用程序调用 API,并将响应解析为 XML 以获得正确的节点。然后只需将 PictureBox 的来源设置为 url。 这就是使用“独立”一词的原因。 “使用 WebRequest”对于独立应用程序来说负担太大了。在极少数情况下,它是可以接受的,我同意。但这绝对不是 winforms 或 WPF 的通用答案。 +1 - 即使它是一个独立的应用程序,上线并使用 Wolfram Alpha 的 API 的模式也是一个好主意。 “一种上网和使用 Wolfram 的模式” - 一个很好的笑话,是的))告诉你的客户)))【参考方案3】:

如果您想要 RichTextBox 之外的功能来呈现饼图、分区和 sqr 根等,您可以使用 WebBrowserControl(s) 作为文本框。然后要呈现公式,您可以利用此网页中显示的技术,将其保存到您的桌面并打开 html 文件:

http://www.wjagray.co.uk/maths/ASCIIMathTutorial.html

显然,您将需要特殊的语法(或特殊的计算器按钮)来输入公式,我猜测通过查看驱动该网页的 customisations.js 文件,您也可以创建自己的运算符和函数列表。

【讨论】:

【参考方案4】:

如果 .NET 特定解决方案都不适合您,我会这样做:

这有点老套,但它会起作用,而且您的用户不会知道其中的区别。下载Mathjax 库。当您的用户输入方程式时,您可以将方程式转换为 LaTex 或 MathML。然后,您将使用 LaTex 或 MathML 并生成一个引用 Mathjax 的 HTML 文件,并在您的小 WebBrowser 窗口中显示该文件(对 WinForms 和 WPF 都有效)。这应该不需要互联网连接。

就像我说的,你的用户不会更聪明。

【讨论】:

以上是关于如何在 WPF 或 WinForms 中呈现公式的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在 wpf WebBrowser 控件之上呈现 WPF 控件?

在winforms或wpf中拖放

WinForms 或 WPF 的文本差异可视化控件

哪个具有更快的运行时性能:WPF 或 Winforms?

实体框架 + SQL Server Compact + WPF/WinForms = 缓慢的 UI?

如何在 Jetbrains Rider 中开发 GUI 设计器,例如在 Visual Studio 中用于 WinForms、WPF 等? [复制]