C # библиотека для вывода векторного формата CGM или WMF - PullRequest
2 голосов
/ 17 февраля 2012

Я пишу приложение для создания диаграмм в C # .NET 4, и мне нужен графический вывод для редактирования в Microsoft Excel. Единственные 2 векторных формата, которые я знаю для MS Office, - 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, похоже, не заботятся о том, является ли это векторным или растровым форматом, поэтому я надеюсь получить дополнительную помощь. Спасибо.

1 Ответ

9 голосов
/ 04 марта 2012

Проверьте библиотеку 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);
...