Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
3 / 3 / 2
Регистрация: 21.10.2013
Сообщений: 225

Меняем цвет графиков в Zedgraph

29.09.2015, 19:00. Показов 2154. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть Zedgraph. При построении указывается массив времени, массив значений Y, цвет будущей кривой:
C#
1
Z1.GraphPane.AddCurve("Ось X, 8часовой запуск, осреднение по " + tbMean.Text + "точкам", time, drawMas,Color.Red, ZedGraph.SymbolType.None);
Новая кривая создаётся по нажатии кнопки на форме. Новый график должен строиться на фоне старого и соответственно должен быть виден.
Графиков может быть до 10, соответственно хотелось бы, чтобы каждый был своего цвета.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.09.2015, 19:00
Ответы с готовыми решениями:

Построение графиков ZedGraph
Подскажите, как с помощью zedGraph постоить несколько графиков на одной плоскости, с разными цветами линий. Проблема в том, что мы не знаем...

Несколько графиков ZedGraph
Как построить несколько отдельных графиков (несколько разных элементов ZedGraphControl) на одной форме. Просто несколько контролов...

Построение графиков в ZedGraph
нужно научится графики рисовать, погуглил нашел zedGraph. private double f (double x) { if (x == 0) { return...

6
Заблокирован
29.09.2015, 19:12
Цитата Сообщение от ToLexx Посмотреть сообщение
Графиков может быть до 10, соответственно хотелось бы, чтобы каждый был своего цвета.
ToLexx, создаете массив желаемых цветов и переменную счетчик. Дальше при добавлении просто обращаетесь по индексу:

C#
1
Z1.GraphPane.AddCurve("Ось X, 8часовой запуск, осреднение по " + tbMean.Text + "точкам", time, drawMas,colors[count++], ZedGraph.SymbolType.None);
Чтобы гарантированно не выйти за пределы массива, можно использовать остаток от деления на количество цветов
0
3 / 3 / 2
Регистрация: 21.10.2013
Сообщений: 225
29.09.2015, 19:23  [ТС]
Сделал так:
C#
1
2
3
4
            grafcount++;
                        string[] colorr = { "Black", "Red", "Yellow", "Black", "Red", "Yellow", "Black", "Red", "Yellow", "Black" };
                        Color COLOR = Color.FromName(colorr[grafcount]);
                        Z1.GraphPane.AddCurve("Ось X " + tbMean.Text, time, drawMas,COLOR, ZedGraph.SymbolType.None);
Рисует всё так же красный первым((

Добавлено через 1 минуту
а-а, т.е. можно непосредственно в аргументах функции как бы инкрементировать номер.
Как я сделал все получилось правильно, просто сначала прорисовывать потом инкремент.
Сейчас Ваш попробую.

Добавлено через 1 минуту
Про остаток, вы имеете ввиду если надо только 10 кривых, а на кнопку нажали 20 раз?? Правильно понял?

Добавлено через 5 минут
Попробовал:
C#
1
2
3
4
            grafcount++;
            string[] colorr = { "Black", "Red", "Yellow", "Black", "Red", "Yellow", "Black", "Red", "Yellow", "Black" };
            Z1.GraphPane.AddCurve("Ось X, 8часовой запуск, осреднение по " + tbMean.Text + "точкам", time, drawMas,Color.colorr[grafcount++], ZedGraph.SymbolType.None);
и так    :Z1.GraphPane.AddCurve("Ось X, 8часовой запуск, осреднение по " + tbMean.Text + "точкам", time, drawMas,colorr[grafcount++], ZedGraph.SymbolType.None);
Если я всё правильно написал, то не пашет((
0
Заблокирован
29.09.2015, 19:28
Цитата Сообщение от ToLexx Посмотреть сообщение
Про остаток, вы имеете ввиду если надо только 10 кривых, а на кнопку нажали 20 раз?? Правильно понял
Поясню на вашем примере, у вас в string[] colorr 3 разных цвета. Вместо того, что повторять элементы массива, можно использовать остаток от деления: [count % colorr.Length]
Тогда цвета будут чередоваться.
0
3 / 3 / 2
Регистрация: 21.10.2013
Сообщений: 225
29.09.2015, 19:54  [ТС]
ага с этим понял.
А по поводу реализации???
Может быть для вашего примера надо как-то тип Color присобачить. Просто у меня не получается массив типа Color сделать для заданных цветов.
Или что вполне вероятно, я как-то неправильно понимаю смысл этого системного Color

Добавлено через 22 минуты
Сейчас попробовал задать по разному массив типа Color(с перечисленными цветаим), ничерта не получилось.
Или как я сделал, лучше не сделаешь?
0
478 / 241 / 74
Регистрация: 25.05.2012
Сообщений: 1,136
Записей в блоге: 1
30.09.2015, 11:14
ToLexx, вот еще способ получения цвета из массива цветов (использовал так же с ZedGraph)

C#
1
2
3
4
5
6
7
8
9
10
11
        // массив предопределенных цветов для отрисовки кривых
        private int mLastColor;
        private Color[] mColors = { Color.Firebrick, Color.ForestGreen, Color.Blue, Color.Red, Color.Purple, Color.LightSeaGreen, Color.DeepPink, Color.Goldenrod, Color.BlueViolet, Color.LimeGreen };
 
 
        // получить следующий цвет из списка
        private Color GetNextColor()
        {
            if (mLastColor >= mColors.Length) mLastColor = 0;
            return mColors[mLastColor++];
        }
0
Заблокирован
30.09.2015, 11:34
Цитата Сообщение от ToLexx Посмотреть сообщение
А по поводу реализации???
ToLexx, на первый взгляд ошибки нет. Вот небольшой тестовый пример, где видно, что код аналогичный вашему работоспособен:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 Color[] colors =
        { 
           Color.Firebrick, Color.ForestGreen, Color.Blue, Color.Red
        };
        int count = 0;
 
        double [] time = Enumerable.Range(0, 30).Select(x => (double)x).ToArray();
        Random rand = new Random();
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            GraphPane pane = zedGraphControl1.GraphPane;
 
            count++;
            var drawMas = Enumerable.Range(0, 30).Select(_ => (double)rand.Next(0, 100)).ToArray();
            pane.AddCurve("L" + count, time, drawMas,
                colors[count % colors.Length], ZedGraph.SymbolType.None);
 
            zedGraphControl1.AxisChange();
            zedGraphControl1.Invalidate();
        }
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.09.2015, 11:34
Помогаю со студенческими работами здесь

Меняем цвет фона с заданным интервалом
Здравствуйте, вуду программирования )))))) Подскажите пожалуйста по поводу 1 вопроса: Требуется написать программку в...

Некорректное отображение двух графиков (Zedgraph)
Собственно вот такая ошибка на оси х два раза повторяется 1 и 3 раза 2. это код, который отрисовывает графики, может я как-то не...

Zedgraph, отрисовать три полотна и на каждом по несколько графиков
День добрый всем! Есть несколько файлов, в каждом из которых по три столбца данных. Есть окно zedgrapha, в этом окне я хочу сделать 3...

Долго делает макрос: поля выкрашеные не в синий цвет меняем на белый цвет
'перед печатью поля выкрашеные не в синий цвет меняем на белый цвет, чтобы они не были видны For i = 1 To ActiveDocument.Fields.Count...

Меняем цвет поля
Бодрого времени суток, господа. Подскажите, пожалуйста, - что бы изменить цвет фона мы используем textbackground(номер_или...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru