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

19
我正在寻找一个简单的组件,用于在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个回答

16

Anton Grigoriev编写的本地Delphi模块,用于绘制数学表达式。助手程序 - 俄语版。 这是它的外观

关于版权的补充说明: 这些模块是免费的。作者只要求在AboutBox等处提到,这些数学表达式是通过ExprDraw和ExprMake模块绘制的,这些模块是由Anton Grigoriev编写的 (从readme.txt中直接翻译而来)


@SveinBringsli,太棒了!我也要试试。 - Pateman
@Pateman 我不确定。它是为Delphi 5开发的。但我已经使用BDS XE进行了检查,助手程序已经成功编译(有一些关于Unicode的警告),并且可以正常工作。 - MBo
这个东西的许可证是什么?我什么也看不到。 - Leonardo Herrera
@Leonardo Herrera 这是免费的。我已经在帖子中添加了关于积分的信息。 - MBo

4
我不知道有原生的Delphi实现,但是也许这个问题能帮到您:如何在WPF或WinForms中呈现公式。它提到了一些可能可以翻译或用作DLL的C/C#解决方案(请参见OP的解决方案)。
另一个选择可能是这个Formulator ActiveX Control
此外,如果您使用一些其他搜索条件,特别是没有“Delphi”关键词,可能会扩大您的搜索结果范围。;-)
renderer, formula, math, MathML, expression, engine, tex, ...

正如我们可以从MBo的答案中了解到的那样,搜寻其他语言也是一个不错的主意 :-)

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

我相信你搜索的内容与此相关,但可能有一个关键词是你遗漏了的。

2

我曾经寻找类似的组件,MBo的解决方案是可以接受的。

我相信还有另一种方法:嵌入TWebBrowser并使用现有的LaTex和MathML公式的javascript渲染器,但是...

我刚试用了QDSEquations,我认为这甚至是更好的解决方案!

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

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

  • 简单的符号与在文本字段中输入数据类似
  • 使用额外的菜单输入特殊符号和公式元素 ⟫

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

希望它有所帮助!


0
几个月前我也遇到了同样的问题,后来我通过获取一个可以从Delphi中调用的LaTeX渲染器DLL解决了这个问题。然后你只需要调用它,将表达式作为字符串传递给它,它就会返回一个包含渲染表达式的位图。
不幸的是,我忘记了它的名字 :( 但你应该能够通过搜索“latex dll delphi”再次找到它。

我很久以前就失去了源代码。不过我记得它非常容易使用,尤其是如果你花时间来制作一个漂亮的界面单元的话。 - Thomas
谢谢您的回答。是 Ghostscript 吗? - menjaraz
不是的。它只是一个基本的DLL,其中导出了形式为function(Expression: PChar): HBITMAP;的函数,并直接进行所有渲染。但这就是我所能回忆起来的全部。记忆不是我的强项:p - Thomas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接