用于 CGM 或 WMF 矢量格式输出的 C# 库

发布于 2025-01-06 15:25:07 字数 1074 浏览 1 评论 0原文

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

我还查看了 .NET 4 中的元文件但似乎主要是为了读取 WMF 文件。它仍然输出为 PNG。

我已经对CMG几乎放弃希望了,实在找不到太多信息。对于 Windows 图元文件格式,我发现 此链接 所以问题是:有人有一个我可以使用的开源库(最好是 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 的其余帖子似乎并不关心它是矢量还是光栅格式,所以我希望得到一些额外的帮助。谢谢。

I am writing a diagramming app in C# .NET 4 and needs the graphic output to be editable in Microsoft Excel. The only 2 vector formats I know for MS Office - CGM and WMF. I am using OpenTK for its OpenGL wrapper, so I have all the vertices.

I also looked at Metafile in .NET 4 but it seems like mainly for reading WMF files. It still outputs into PNG.

I have almost given up hope on CMG already, really not much information to be found. For Windows Metafile Format, I found this link so the question is: has anyone got an opensource library (preferably C#) I can use already, please?

Since I am so bad at this, I need something easy to use like:

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

The rest of the posts around SO and Google doesn't seem to care if it's vector or raster format so I hope to get some additional help. Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

芸娘子的小脾气 2025-01-13 15:25:07

查看 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);

Check out the WMF Library: 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);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文