Как мне сгенерировать линейный график из asp.net WebService? - PullRequest
1 голос
/ 03 апреля 2010

Моему веб-сервису необходимо сгенерировать некоторые линейные диаграммы, которые затем будут добавлены в отчет в формате PDF, который передается клиенту.

Как мне сгенерировать линейный график в веб-сервисе?

Спасибо!

Ответы [ 2 ]

1 голос
/ 03 апреля 2010

Если вы не хотите использовать сторонний элемент управления, вы можете использовать для этого пространство имен System.Drawing.

  1. Создание растрового изображения правильного размера. Лучше всего использовать 32bppargb, потому что это то, что GDI + использует внутри.
  2. Получить графический объект из растрового изображения, используя Graphics.FromBitmap
  3. Рисование на графическом объекте с использованием graphics.DrawLine и т. Д. (Все методы документированы на графическом объекте)
  4. Создайте MemoryStream и сохраните растровое изображение в MemoryStream, которое вы затем сможете использовать в программном обеспечении для записи PDF, или просто сохраните растровое изображение на диск (для этого вам понадобятся разрешения ASP.NET)

Не забудьте утилизировать графический объект, как только вы закончите с ним (лучше использовать блок использования)

Поскольку вы используете GDI + из веб-службы, вы можете рассмотреть возможность использования шаблона Singleton для сериализации запросов на рисование.

0 голосов
/ 03 апреля 2010

Посмотрите на эту страницу здесь

Рисование линейных диаграмм в ASP.Net

Затем вместо того, чтобы запрашивать диаграмму из вашей page_load и возвращать ее в потоке, верните ее из одной из функций веб-сервиса

Редактировать

Ушел и подумал об этом, а затем погасла лампочка - еще один способ сделать это (а также удалить вас из кода GDI +) - использовать API GoogleCharts.

Например, https://chart.apis.google.com/chart?cht=p3&chd=t:90,10&chs=250x100&chl=Overflow|Stack отображает следующее

alt text

Линейные графики

http://code.google.com/apis/chart/docs/gallery/line_charts.html

Кроме того, если вы еще не отсортировали создание PDF, взгляните на iTextSharp здесь

...