Delphi组件或库来显示数学表达式

时间:2012-04-13 07:51:26

标签: delphi math

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

理想情况下,我想要一个像TLabel一样简单的组件,在那里我可以将标题设置为某个表达式并且它会正确显示,但是某些让我将表达式绘制到画布的库对我来说也足够了需要。

更新

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

  

(X ^ 2 + 3)/ X

像这样:

  

enter image description here

解决方案:

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 个答案:

答案 0 :(得分:15)

Anton Grigoriev的

Native Delphi module绘制数学表达式。助理计划 - 俄语。 This is how it looks

增加信用: 模块是免费的。 作者要求提及(AboutBox等)数学表达式是通过由Anton Grigoriev编写的ExprDraw和ExprMake模块绘制的 (来自readme.txt的原始翻译)

答案 1 :(得分: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's answer学到的,用其他语言搜索也是一个好主意: - )

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

我确定你搜索过类似的东西,但可能有一个你忘掉的关键词。

答案 2 :(得分:2)

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

我确信它也可以用另一种方式完成:嵌入一个TWebBrowser并使用一个exixting javascript渲染器用于LaTex和MathML公式,但是......

我刚试过QDSEquations,我认为这是一个更好的解决方案!

  

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

     

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

     
      
  • 输入简单符号与在文本字段中输入数据类似
  •   
  • 在附加菜单的帮助下输入特殊符号和公式元素   »
  •   

最好是因为你可以借助额外的按钮菜单组件和/或使用数学表达式字符串和/或使用预定义的方法直接在“textfield”组件中编辑公式。

希望它有所帮助!

答案 3 :(得分:0)

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

我遗憾地忘记了这个名字:(但是你应该可以通过寻找“latex dll delphi”来找到它吗?