Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Построение графиков 
:(
    Опции темы
Redstuff
Дата 30.10.2006, 23:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Команда REDSTUFF
**


Профиль
Группа: Участник
Сообщений: 497
Регистрация: 27.5.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 1



Подскажите какой компанент отвечает за построение графиков? 
Например, как построить кривую по заданным координатам в плоскости:
X:  Y:
1   3
2   5
3   7
4   9 
5   11
6   15


Это сообщение отредактировал(а) Redstuff - 30.10.2006, 23:37


--------------------
ГОСТы, СНиПы, ТУ...
<реклама удалена администрацией форума>
PM MAIL WWW ICQ Skype   Вверх
Exception
Дата 31.10.2006, 00:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 5
Всего: 186



Ну вообще-то это запросто рисуется ручками на PictureBox'е smile . См. метод Graphics.DrawLine().
PM   Вверх
ivashkanet
Дата 31.10.2006, 09:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 11
Всего: 149



PM MAIL WWW ICQ   Вверх
Redstuff
Дата 7.11.2006, 00:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Команда REDSTUFF
**


Профиль
Группа: Участник
Сообщений: 497
Регистрация: 27.5.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 1



А можно пример  smile ?


--------------------
ГОСТы, СНиПы, ТУ...
<реклама удалена администрацией форума>
PM MAIL WWW ICQ Skype   Вверх
mr.DUDA
Дата 7.11.2006, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 24
Всего: 232



Цитата(Redstuff @  6.11.2006,  23:06 Найти цитируемый пост)
А можно пример

Да сколько угодно  smile :

Код
using System;
using System.Drawing;
using System.Windows.Forms;

namespace WindowsApplication4
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void panel1_Paint(object sender, PaintEventArgs e)
        {
            // задаём координаты точек и масштаб
            Point[] координаты_точек = {
                new Point(1, 3),
                new Point(2, 5),
                new Point(3, 2),
                new Point(4, 9),
                new Point(5, 1),
                new Point(6, 15)
            };
            float масштаб_по_X = 20f;
            float масштаб_по_Y = 10f;

            // преобразуем в координаты на форме (направление по Y - сверху вниз)
            PointF[] координаты_на_форме = new PointF[координаты_точек.Length];
            for (int i = 0; i < координаты_точек.Length; i++)
            {
                координаты_на_форме[i] = new PointF(
                    координаты_точек[i].X * масштаб_по_X,
                    panel1.Height - координаты_точек[i].Y * масштаб_по_Y);
            }

            // выводим кривую графика
            e.Graphics.DrawCurve(Pens.Black, координаты_на_форме);

            // рисуем "оси координат"
            e.Graphics.DrawLine(Pens.Red, 0, panel1.Height, 0, 0);
            e.Graphics.DrawLine(Pens.Red, 0, panel1.Height - 1, panel1.Width, panel1.Height - 1);
        }
    }
}



--------------------
user posted image
PM MAIL WWW   Вверх
Redstuff
Дата 7.11.2006, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Команда REDSTUFF
**


Профиль
Группа: Участник
Сообщений: 497
Регистрация: 27.5.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 1



Спасибо mr.DUDA!

А можно примерчик, чтобы точки были не заданны, а вводить их с формы можно было?

Это сообщение отредактировал(а) Redstuff - 7.11.2006, 17:19


--------------------
ГОСТы, СНиПы, ТУ...
<реклама удалена администрацией форума>
PM MAIL WWW ICQ Skype   Вверх
mr.DUDA
Дата 7.11.2006, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 24
Всего: 232



Хы, так это некислый пример получится. Вот упрощённый вариант:
Код
using System;
using System.Drawing;
using System.Collections.Generic;
using System.Windows.Forms;

namespace WindowsApplication4
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        // динамический список точек
        List<Point> _points = new List<Point>();

        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                // при нажатии кнопки "Добавить", добавляем точку в список и листбокс
                // чтобы было видно что у нас за точки
                Point pt = new Point(int.Parse(textBox1.Text), int.Parse(textBox2.Text));
                _points.Add(pt);
                listBox1.Items.Add(string.Format("X={0};Y={1}", pt.X, pt.Y));

                // перерисовка графика
                panel1.Refresh();

                // ставим в текстбоксе какие-то данные для следующей точки, фокус - в текстбокс "Y"
                textBox1.Text = (1 + _points.Count).ToString();
                textBox2.Text = "0";
                textBox2.Focus();
                textBox2.SelectAll();
            }
            catch
            {
            }
        }

        private void panel1_Paint(object sender, PaintEventArgs e)
        {
            // если точек слишком мало для графика, то и рисовать нечего
            if (_points.Count < 2) return;

            // берём координаты точек и масштаб
            Point[] координаты_точек = _points.ToArray();
            float масштаб_по_X = 20f;
            float масштаб_по_Y = 10f;

            // преобразуем в координаты на форме (направление по Y - сверху вниз)
            PointF[] координаты_на_форме = new PointF[координаты_точек.Length];
            for (int i = 0; i < координаты_точек.Length; i++)
            {
                координаты_на_форме[i] = new PointF(
                    координаты_точек[i].X * масштаб_по_X,
                    panel1.Height - координаты_точек[i].Y * масштаб_по_Y);
            }

            // выводим кривую графика
            e.Graphics.DrawCurve(Pens.Red, координаты_на_форме);
        }
    }
}




Присоединённый файл ( Кол-во скачиваний: 28 )
Присоединённый файл  WindowsApplication4.zip 13,92 Kb


--------------------
user posted image
PM MAIL WWW   Вверх
XAH
Дата 9.12.2006, 01:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 6.12.2006

Репутация: нет
Всего: нет



mr.DUDA  smile АГРОМНОЕ СПАСИБО за этот код, я вообще не представляю себе как бы я сам всё это написал, у меня задание построить разного вида диаграммы, а я мучался, с тем, как создать свою систему координат, щас мне осталось его чуть доработать и меня задание выполенно. Вот только у меня еще есть вопрос по поводу круговой диаграммы, я даже алгоритма не представляю как это сделать. а доработать осталось: масшабируемость, сетку координатную, подписи, сделать столбчатую и круговую диаграммы.

Есть ли какие нибудь несложные библиотеки для построения графиков?

СПАСИБО ЗА КОД ЕЩЁ РАЗ!!!
PM   Вверх
Redstuff
Дата 9.12.2006, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Команда REDSTUFF
**


Профиль
Группа: Участник
Сообщений: 497
Регистрация: 27.5.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 1



XAH, я тоже искал подобное, нашел чарты с разными видами диаграм (круговые....), но масштабируемости нет к сожалению.
скачать сможешь из этой темы http://forum.vingrad.ru/topic-121293/0.html#entry937903


--------------------
ГОСТы, СНиПы, ТУ...
<реклама удалена администрацией форума>
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0740 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.