可视化数学方程式的库(如公式编辑器)

时间:2011-02-16 04:29:10

标签: c# math

我正在寻找一个能为我提供方程式编辑器功能的c#库。我不是在寻找数学库来评估数学表达式。

有什么建议吗?

4 个答案:

答案 0 :(得分:6)

我建议使用my fork of WPF-Math。我已经联系了原始的WPF-Math作者,现在正式维护现代框架库。实际上,它的状态非常好。

这是一个重要但不完整的解决方案,因为WPF-Math只是一个渲染,而不是完整的公式编辑器。

答案 1 :(得分:4)

存在一些选择:

wpf-math这是一个将基于数学的TeX呈现给WFP的API,并且有一些有限的代码可以使用Expression并将其转换为TeX。

另一个选择是使用MS Word,它具有一些非常高级的功能,可以将常规数学公式作为简单字符串,并以良好的格式呈现它们。这是一些与该功能相关的代码。

public class FormulaImageConverter: IDisposable
{
    private Guid _guid;

    private Application _wordApp;
    private Document _doc;
    private Range _range;

    private string _saveName;
    private string _extractPath;

    public FormulaImageConverter(Application wordApp)
    {

        _wordApp = wordApp;
        _guid = Guid.NewGuid();
        string guidToString = _guid.ToString("N");
        string saveNameBase = System.IO.Path.Combine(System.IO.Path.GetTempPath(), guidToString);
        _saveName = saveNameBase + ".html";
        _extractPath = saveNameBase + @"_files\image002.gif";

        _wordApp.Visible = false;
        _doc = _wordApp.Documents.Add();
        _range = _doc.Range();
        _range.Text = "5";
        _doc.OMaths.Add(_range);

    }

    public byte[] ConvertFormulaToImage(string eq)
    {
        _range.Text = eq;
        _doc.OMaths.BuildUp();
        _doc.SaveAs(_saveName, WdSaveFormat.wdFormatHTML,Type.Missing,Type.Missing,false,Type.Missing,null,false);

        return System.IO.File.ReadAllBytes(_extractPath);
    }

    public void Dispose()
    {
        _range = null;
        _doc = null;
        _wordApp.Documents.Close(WdSaveOptions.wdDoNotSaveChanges);
        ((_Application)_wordApp).Quit(false);
        _wordApp = null;
        System.IO.File.Delete(_saveName);
        for (int i = 0; i < 2; i++)
        {
            GC.Collect();
            GC.WaitForPendingFinalizers();
        }
    }
}

答案 2 :(得分:2)

答案 3 :(得分:0)

另一方面,您碰巧检查了这个http://www.microsoft.com/downloads/en/details.aspx?FamilyID=9caca722-5235-401c-8d3f-9e242b794c3a

也许您可以尝试使用COM在C#中使用它。就个人而言,我没有尝试过,但我想我可以分享一下我的观点