【问题标题】:C# library for CGM or WMF vector format output用于 CGM 或 WMF 矢量格式输出的 C# 库
【发布时间】:2012-03-08 14:26:48
【问题描述】:

我正在使用 C# .NET 4 编写图表应用程序,并且需要在 Microsoft Excel 中可编辑图形输出。我所知道的 MS Office 仅有的 2 种矢量格式 - CGM 和 WMF。我使用 OpenTK 作为它的 OpenGL 包装器,所以我拥有所有的顶点。

我还查看了Metafile in .NET 4,但它似乎主要用于读取 WMF 文件。它仍然输出到 PNG。

我已经对CMG几乎放弃了希望,实在找不到太多信息了。对于 Windows 元文件格式,我找到了this link,所以问题是:有人有我可以使用的开源库(最好是 C#)吗?

由于我在这方面很糟糕,我需要一些易于使用的东西,例如:

wmf = new Wmf();
wmf.addLine(x, y);
wmf.addRectangle(x, y, w, h);
wmf.addEllipse(x, y, radiusx, radiusy);
wmf.save("welldone.wmf");

其他关于 SO 和 Google 的帖子似乎并不关心它是矢量格式还是光栅格式,所以我希望能得到一些额外的帮助。谢谢。

【问题讨论】:

    标签: .net wmf


    【解决方案1】:

    查看 WMF 库:http://wmf.codeplex.com/

    var wmf = new WmfDocument();
    wmf.Width = 1000;
    wmf.Height = 1000;
    wmf.Format.Unit = 288;
    wmf.AddPolyFillMode(PolyFillMode.WINDING);
    wmf.AddCreateBrushIndirect(Color.Blue, BrushStyle.BS_SOLID);
    wmf.AddSelectObject(0);
    wmf.AddCreatePenIndirect(Color.Black, PenStyle.PS_SOLID, 1);
    wmf.AddSelectObject(1);
    
    wmf.AddLine(Point start, Point end);
    wmf.AddRectangle(x, y, width, height);
    wmf.AddEllipse(x, y, width, height);
    
    wmf.AddDeleteObject(0);
    wmf.AddDeleteObject(1);
    wmf.Save(path);
    

    【讨论】:

    • 哇,谢谢。及时帮助。但是您创建此帐户只是为了帮助我们解决 WMF 问题吗?将检查出来,然后返回标记为答案,如果它有效。再次感谢。
    • 感谢您的工作。真的很容易扩展。我为 Line、Move、Arc 和 Ellipse 添加了额外的记录。您有兴趣将其添加到源中吗?
    • 其实我自己也在寻找解决方案,然后决定建立一个新的库。您的问题帮助我确定了代码流的外观。感谢您提供的额外记录,已被 CodePlex 接受。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-07
    • 1970-01-01
    • 2010-12-18
    • 2010-10-01
    • 1970-01-01
    相关资源
    最近更新 更多