![]() |
Здравствуйте, гость ( Вход | Регистрация )
|
|
|
![]() ![]() |
![]() |
Отправлено: 04.01.2009, 15:04
|
|
Experienced ![]() ![]() ![]() ![]() Группа: Опытный Сообщений: 503 Регистрация: 27.11.2002 Пользователь №: 101 ![]() |
Привет, народ.
Мне надо нарисавать график на c#. Как это сделать? Может кто ни будь посоветовать как начать работать с 2D графикой в .net может посоветуете мануал. |
|
|
Отправлено: 04.01.2009, 15:25
|
|
Patriarch ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 8967 Регистрация: 18.05.2004 Пользователь №: 2398 ![]() |
Какая задача перед вами стоит? Освоить 2D графику в .NET и построение графика — это просто упражнение. Или вам нужна библиотека построения графиков с автоматическим маштабированием, осями, подписями, легендой,... ?
-------------------- Ich weiß nicht, was du sagest.
|
|
|
Отправлено: 04.01.2009, 21:00
|
|
Experienced ![]() ![]() ![]() ![]() Группа: Опытный Сообщений: 503 Регистрация: 27.11.2002 Пользователь №: 101 ![]() |
Мне скоро надо будет сделать что то вроди изолиний. Поэтому я решил освоить 2Д графику. Мне надо понять основную концепцию 2Д графики на C#. Я посмотрел имеющиеся классы. Их вроди не много, однако хотелось бы понять основную идею из которой исходят при написание 2д графики. Может есть уже устоявшиеся соглашения, которые надо знать. Хотелось бы найти обзорный мануал, где говорилось бы какие классы есть и чем для чего лудьше пользоваться.
|
|
|
Отправлено: 04.01.2009, 23:44
|
|
Guru ![]() ![]() ![]() ![]() ![]() ![]() Группа: Опытный Сообщений: 3964 Регистрация: 09.04.2007 Пользователь №: 45663 ![]() |
Как грится, RTFMSDN
Класс Graphics - векторная, Bitmap - растровая. Внутри всё довольно интуитивно понятно. |
|
|
Отправлено: 05.01.2009, 12:28
|
|
Patriarch ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 8967 Регистрация: 18.05.2004 Пользователь №: 2398 ![]() |
Мне скоро надо будет сделать что то вроди изолиний. Если исходная задача таки не изучение 2D графики в .NET, то не тратьте времени на ерунду, воспользуйтесь готовыми программными продуктами.
-------------------- Ich weiß nicht, was du sagest.
|
|
|
Отправлено: 07.01.2009, 12:43
|
|
Patriarch ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 8659 Регистрация: 28.05.2005 Из: Кольцово Пользователь №: 10575 ![]() |
Если ваша задача - визуализация графиков, то недавно вышел компонент MS Chart Control, ставите - интегрируется в VS, к нему есть мануал. Линк брал из блога Скотта Гатри, поищите на msdn.
-------------------- Анноит? Пиши комплейн!
|
|
|
Отправлено: 09.01.2009, 22:42
|
|
Experienced ![]() ![]() ![]() ![]() Группа: Опытный Сообщений: 503 Регистрация: 27.11.2002 Пользователь №: 101 ![]() |
может кто знает как вывести точку на экран?
|
|
|
Отправлено: 10.01.2009, 14:23
|
|
Patriarch ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 8967 Регистрация: 18.05.2004 Пользователь №: 2398 ![]() |
может кто знает как вывести точку на экран? Код [DllImport("user32.dll")] public static extern int GetDC(int hwnd); [DllImport("gdi32.dll")] public static extern int SetPixel(int hdc, int x, int y, int color); Код SetPixel(GetDC(0), x, y, ColorTranslator.ToOle(color));
-------------------- Ich weiß nicht, was du sagest.
|
|
|
Отправлено: 12.01.2009, 17:46
|
|
Veteran ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1056 Регистрация: 15.12.2004 Пользователь №: 5609 ![]() |
Насчет использования неуправляемых функций из dll - помоему колега издевается).
Наверное самый простой способ - создать форму или UserControl, переопределить метод OnPaint и в нем нарисовать что нужно используя методы класса Garphics. Код protected override void OnPaint(PaintEventArgs e)
{ Graphics g = e.Graphics; g.DrawLine(new Pen(Color.Red), 0, 0, 100, 100); } -------------------- Seamos realistas, sonemos lo imposible.
|
|
|
Отправлено: 12.01.2009, 19:17
|
|
Patriarch ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 8967 Регистрация: 18.05.2004 Пользователь №: 2398 ![]() |
Насчет использования неуправляемых функций из dll - помоему колега издевается). Нисколько. Управляемыми нельзя «вывести точку на экран». А именно таков был вопрос. Кстати, управляемые функции — они тоже в dll все ![]() -------------------- Ich weiß nicht, was du sagest.
|
|
|
Отправлено: 12.01.2009, 22:44
|
|
Guru ![]() ![]() ![]() ![]() ![]() ![]() Группа: Опытный Сообщений: 3964 Регистрация: 09.04.2007 Пользователь №: 45663 ![]() |
Насчет использования неуправляемых функций из dll - помоему колега издевается). Нисколько. Управляемыми нельзя «вывести точку на экран». А именно таков был вопрос. Кстати, управляемые функции — они тоже в dll все ![]() Можно, только сначала в битмап, а потом уже битмап на экран. Там даже целый SetPixel() есть. |
|
|
Отправлено: 12.01.2009, 23:02
|
|
Patriarch ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 8967 Регистрация: 18.05.2004 Пользователь №: 2398 ![]() |
Можно, только сначала в битмап, а потом уже битмап на экран. Там даже целый SetPixel() есть. Даже не знаю с чем вы спорите и стоит ли, собственно, с вами дискутировать. Я всегда точен в высказываниях. Вы и сами себе уже возразили вполне успешно. Нужные ваши слова я выделил. «Вывод точки на экран», «вывод точки в битмап» и «вывод битмапа на экран» — это разные операции. Вполне понятно, что при выводе битмапа точки тоже какие-то выводятся. Но и при рисовании линии они тоже выводятся. И даже круга и эллипса. Даже если вы текст на экран выводите, то он тоже состоит из точек. Эти операции вы же почему-то с «выводом точки» не отождествляете. Странно почему? Был задан чёткий вопрос, я дал вполне чёткий ответ. Если хотите обходными путями точки выводить, то лучше уж линию из одной точки нарисуйте, чем битмап заводить ради одного пиксела. -------------------- Ich weiß nicht, was du sagest.
|
|
|
Отправлено: 17.01.2009, 15:04
|
|
Experienced ![]() ![]() ![]() ![]() Группа: Опытный Сообщений: 503 Регистрация: 27.11.2002 Пользователь №: 101 ![]() |
На самом деле при помощи линии не получится потому что не позволяется выводить линию нулевой длины. В том то и проблемма.
|
|
|
Отправлено: 17.01.2009, 17:40
|
|
Patriarch ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 8967 Регистрация: 18.05.2004 Пользователь №: 2398 ![]() |
На самом деле при помощи линии не получится потому что не позволяется выводить линию нулевой длины. В том то и проблемма. Нет никакой поблемы. Точка — это, очевидно, линия единичной длины, а не нулевой ![]() Код private void Form1_Paint(object sender, PaintEventArgs e) { Graphics g = e.Graphics; g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.None; Pen p = new Pen(Color.Red, 1); p.EndCap = System.Drawing.Drawing2D.LineCap.NoAnchor; g.DrawLine(p, 10, 10, 11, 10); } и вуаля: -------------------- Ich weiß nicht, was du sagest.
|
|
|
Отправлено: 17.01.2009, 18:10
|
|
Experienced ![]() ![]() ![]() ![]() Группа: Опытный Сообщений: 503 Регистрация: 27.11.2002 Пользователь №: 101 ![]() |
Спасибо
|
|
|
![]() ![]() |
![]() |
Текстовая версия |