arunmj Ответов: 2

Как нарисовать 2D линейный график с помощью C#?


Всем Привет,

Я новичок в C#.Net. Я пытаюсь создать 2D-линейный график без использования сторонних компонентов.

Есть ли в C# какая-либо опция для рисования графика и линейного графика только с помощью .Чистый контроль?

Заранее спасибо,

Арун М

Sandeep Mewara

Вывешивание всех в шапках считается криком. Я уверен, что вы не собирались этого делать. Поэтому, пожалуйста, избегайте этого в следующий раз.

arunmj

ладно , ладно, я новичок в этом деле..

2 Ответов

Рейтинг:
8

JF2015

Смотрите здесь элемент управления MS-Chart. Это часть .NET (так что нет 3-й партии) и делает все, что вам может понадобиться:
http://code.msdn.microsoft.com/mschart[^]

Отредактированный:
Элементы управления являются частью системы .NET framework 4.0, так что нет необходимости их скачивать. Вам нужно загрузить элементы управления, если вы используете более раннюю версию .NET (я думаю, что это работает вплоть до .NET 2.0). Затем вам нужно добавить ссылку на элемент управления chart в свой проект C#, прежде чем вы сможете их использовать. Взгляните на примеры, которые содержатся в загрузке или по ссылке, которую я разместил - они дают довольно хорошее начало.

Отредактировано 2:
См. здесь обзор пространства имен для элемента управления диаграммой:
http://msdn.microsoft.com/en-us/library/system.windows.forms.datavisualization.charting.aspx[^]

Отредактировано 3:
Если вы используете .NET 4.0, вам не нужно распространять dll-файлы на целевую машину. Если вы используете версию < 4.0, вам нужно скопировать dll-файлы в папку исполняемого файла вашего приложения или зарегистрировать dll-файлы в gac.


arunmj

большое спасибо приятель :)

Sergey Alexandrovich Kryukov

ОП спросил о вариантах без 3-й партии. Я изобразил, что тут происходит.

JF2015

МС контроль графика является частью .Продажи начиная с версии 3.5. Так это на деле является оригинальной .Чистый контроль и никакой третьей стороны!

arunmj

привет jf2015,,
не могли бы вы объяснить немного больше в этом вопросе ??
нужно ли мне загружать дополнения с упомянутого веб-сайта, чтобы получить элементы управления ??...

arunmj

объясните немного подробнее о процедуре, чтобы быть Дон плз ..?

Sergey Alexandrovich Kryukov

Я не нашел его в 3.5, а потом понял, что это отдельный продукт. Таким образом, хотя это и не сторонняя, но и не стандартная библиотека GAC. Я не уверен на 100%, что это именно то, что хотел ОП, из-за проблем развертывания/повторного распространения и т. д.

Арун, что ты скажешь?

JF2015

Извините, моя ошибка - это часть .NET 4.0, как указано в этой ссылке: http://code.msdn.microsoft.com/mschart

arunmj

К СА:
Поскольку это часть MSDN, то она точно не является третьей стороной ,,
это лучше, чем использовать третью сторону. я более свежая, так что у меня нет большого представления об этом.

Sergey Alexandrovich Kryukov

Так, будет ли это сделать вы, используя В. 4.0 (и, вероятно, по сравнению с 2010 годом)?

arunmj

да, его нужно изменить на v 4.0.(VS 2010)

Sergey Alexandrovich Kryukov

Идеальный. Надеюсь, теперь у вас есть другой, мощный вариант.
Удачи и звоните еще раз!
--СА

Sergey Alexandrovich Kryukov

Я только что нашел его: есть страница загрузки для 3.5, я все еще не уверен насчет 4.0. Он в комплекте? Не могли бы вы разместить полное пространство имен/имена классов? (потому что я не нашел его в V.4. 0)

Sergey Alexandrovich Kryukov

Наконец: см. раздел Система.Окна.Формы.DataVisualization.Картирование
@JF2015: это было не совсем на поверхности...
Давайте посмотрим, готов ли ОП перейти к V.4.0 (или V. 3. 5 с надстройкой)...

Espen Harlinn

Хороший ответ :)

Рейтинг:
18

Sergey Alexandrovich Kryukov

Это зависит от того, какую библиотеку пользовательского интерфейса вы хотите использовать: System.Windows.Forms или WPF.

WPF is much more powerful and easier to use (when it comes to plotting, I don't say in general). There are many approaches. I thing you need to use canvas and put graphical objects on it. In this case, you don't have to care about rendering of graphics, you only support properties of your objects. Quality and performance are very good as it all based on ActiveX, all graphics is anti-aliased, with full support of transparency (alpha channel). You can automatically scale you graphic, fit it with preserved aspect ratio or otherwise, perform affine transformations and a lot more. One can develop plotting components using set of objects composed out of graphical primitives (such as Rectangle, Ellipse, Besier curve, Text, etc.).

В отличие от этого, System.Windows.Forms нуждается в рендеринге, который вы можете сделать в обработчике событий элемента управления Paint (или переопределенный метод OnPaint). Вы можете создать пользовательский элемент управления или использовать Panel или контроль, производный от Panel Аргумент события несет в себе Graphics объект, используемый для вызова его методов рисования. Эта функция рендеринга основана на сообщении Windows WM_PAINT. Как и в нативных Windows GDI и GDI+, необходимо определить процедуру рендеринга, вызываемую каждый раз WM_PAINT отправляется в управление. Событие не отправляется до тех пор, пока управление не будет признано недействительным. Это перегруженный метод Control.Invalidate поставляется в безпараметрическом разнообразии, используемом для аннулирования элемента управления, а также с параметрами, используемыми для аннулирования некоторого подмножества сцены: Region или Rectangle Таким образом, модификация графики осуществляется путем модификации некоторых данных, используемых при рендеринге, с последующим вызовом Invalidate В отличие от WPF, рисование примитивов всегда выполняется в пикселях, однако пиксельные измерения имеют float тип: благодаря (необязательному) сглаживанию используется субпиксельная точность измерений графических примитивов. Эта библиотека также предоставляет достаточные возможности для разработки компонентов построения графиков. Он требует большего понимания механизмов рендеринга и обычно обеспечивает более низкую производительность по сравнению с WPF.

Дальнейшие вопросы приветствуются.

Удачи,
--СА


JF2015

Хороший и очень подробный ответ.

arunmj

Спасибо за подробное объяснение,,,,

Espen Harlinn

Хороший ответ :)

Sergey Alexandrovich Kryukov

Спасибо, Эспен. Это восходит к множеству повторяющихся вопросов о рендеринге и объектах.
Было бы хорошо иметь один обзор для ссылки, чтобы сделать ответ быстрее и точнее...
--СА