19

我正在寻找一个在 Delphi 中显示数学表达式的简单组件。当我开始时,我认为在网上找到一些东西很容易,但事实证明这比预期的要难。有很多很多的组件可以解析数学表达式,但很少(没有?)会显示它们。

理想情况下,我想要一个像 TLabel 这样简单的组件,我可以在其中将标题设置为某个表达式,并且它会正确显示,但是让我将表达式绘制到画布上的某种库也足以满足我的需要。

更新:

我不是在谈论绘制函数图或类似的东西。我想显示(例如)

(X^2+3)/X

像这样:

在此处输入图像描述

解决方案:

MBo 的答案正是我想要的。有些人可能会对所有评论和文档都是俄语的事实感到厌烦,但不要让这吓到你。它真的很容易使用。

安装:将文件(至少“ExprMake.pas”和“ExprDraw.pas”)解压缩到库路径中的目录。就是这样。

使用:我没有对它进行过广泛的实验,但是这几行代码证明了它是多么容易。

procedure TForm1.Button1Click(Sender: TObject);
var
  vExprC : TExprClass;
  vExprB : TExprBuilder;
begin
  vExprB := TExprBuilder.Create;
  try
    vExprC := vExprB.BuildExpr('(X^2+3)/X');
    vExprC.Canvas := Canvas;
    vExprC.Font.Size := 50;
    vExprC.Draw(10,10,ehLeft,evTop);
  finally
    vExprC.Free;
    vExprB.Free;
  end;
end;
4

4 回答 4

16

Anton Grigoriev 的本机 Delphi 模块,用于绘制数学表达式。助理程序 - 俄语。这就是它的样子

关于学分的补充:模块是免费的。作者只要求提及(AboutBox 等)数学表达式是通过 Anton Grigoriev 编写的 ExprDraw 和 ExprMake 模块绘制的 (来自 readme.txt 的原始翻译)

于 2012-04-13T11:47:33.840 回答
4

我不知道原生的 Delphi 实现,但也许这个问题对你有帮助:How to render a formula in WPF or WinForms。它提到了一些可能翻译或用作 DLL 的 C/C# 解决方案(请参阅 OP 的解决方案)。

另一种选择可能是这个Formulator ActiveX Control

此外,如果您使用其他一些搜索条件,尤其是没有“Delphi”关键字,它可能会扩大您的搜索结果。;-)

renderer, formula, math, MathML, expression, engine, tex, ...

正如我们可以从MBo 的回答中学到的那样,用其他语言搜索也可能是个好主意:-)

delphi математических формул рисования 

我确定您搜索过类似的内容,但可能有一个关键字您忘记了。

于 2012-04-13T11:15:52.420 回答
2

我一直在寻找类似的组件,而 MBo 的解决方案是可以接受的。

我确信它也可以通过另一种方式完成:嵌入 TWebBrowser 并为 LaTex 和 MathML 公式使用现有的 javascript 渲染器,但是......

我刚刚尝试了 QDSEquations,我认为它甚至是一个更好的解决方案!

⟪ Delphi 组件方程编辑器,允许您输入和显示任何复杂的数学公式,从简单的希腊符号到矩阵和复杂的积分表达式。您可以在 Delphi 环境中编写的项目中使用方程编辑器,例如,在测试不同数学领域(数学分析、离散数学、概率论等)、物理等知识的程序中。

在其中输入公式非常容易:

  • 简单符号的输入类似于在文本字段中输入数据
  • 在附加菜单的帮助下输入特殊符号和公式元素 ⟫</li>

更好的是,您可以借助附加按钮菜单组件和/或使用数学表达式字符串和/或使用预定义的方法直接在“文本字段”组件中编辑公式。

希望它有所帮助!

于 2013-03-01T11:21:33.483 回答
0

几个月前我遇到了同样的问题,我通过获取可以从 Delphi 调用的 LaTeX 渲染器 DLL 解决了它。然后你只是调用它,将表达式作为字符串给它,它会返回一个位图,其中包含渲染的表达式。

不幸的是我忘记了这个名字:(但你应该能够通过寻找“latex dll delphi”再次找到它?

于 2012-04-13T12:05:00.653 回答