Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Windows Forms
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.10.2015, 15:50   #1
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию Запустить ZedGraph RollingPointPairList

У меня ZedGraph сейчас отлично работает, вот код всего, что я добавил для работы этой библиотеки:
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using ZedGraph;
using System.Collections;

namespace Bin_creator
{
    
    public partial class FormM : Form
    {
        bool btn1pos = false;
        

        public FormM()
        {
            InitializeComponent();



        }

    private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void richTextBox1_TextChanged(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            btn1pos = !btn1pos;

            this.Controls["button1"].UseWaitCursor = false;
            /////////////////Представляем символы в двоичном виде и выводим на график/////////////////
            //////////////////////////////////////////////////////////////////////////////////////////  
            string A = richTextBox1.Text;
            string str_bin = asbin(A);

            byte[] strBytes = System.Text.Encoding.Unicode.GetBytes(A);

            StringBuilder sb = new StringBuilder();
            foreach (byte b in System.Text.Encoding.Unicode.GetBytes(A))
                sb.Append(Convert.ToString(b, 2).PadLeft(8, '0')).Append(' ');

            string binaryStr = sb.ToString();                  //////////////Массив 0 и 1

            string bin_mes = asbin("Hello");
            this.Controls["richTextBox2"].Text = bin_mes;//str_bin;
           

            ////////////////////////////////////////////////////////////////Создание значений x

            ZedGraphControl zedGraph = new ZedGraphControl();
            zedGraph.Location = new System.Drawing.Point(100, 10);
            zedGraph.Name = "zedGraph";
            zedGraph.Size = new System.Drawing.Size(500, 300);
            this.Controls.Add(zedGraph);
            ZedGraphControl zgc = zedGraph;
            GraphPane myPane = zgc.GraphPane;
            myPane.CurveList.Clear();
            // Set the titles and axis labels
            myPane.Title = "Бинарные данные";
            myPane.XAxis.Title = "n, выборки";
            myPane.YAxis.Title = "bin_data, единицы";
            PointPairList list = new PointPairList();

           

            int l = strBytes.Length;
            int[] myArr = new int[l];
            // Инициализируем каждый элемент массива вручную
            for (int i = 0; i < l; i++)
            {
                myArr[i] = i;
                list.Add(myArr[i], strBytes[i]);
            }

            LineItem myCurve = myPane.AddCurve("bin_data",
                list, Color.Green, SymbolType.Diamond);
            zgc.AxisChange();
            zgc.Refresh();
            zedGraph.Invalidate();

            if (btn1pos)
            {
              
            }

            if (!btn1pos)
            {
                this.Controls["button1"].UseWaitCursor = true;

            }

        }

        static string chr2(char c)
        {
            string s = "";
            for (; c != '\0'; c = (char)((byte)c >> 1)) s = ((((byte)c & 1) != 0) ? "1" : "0") + " " + s;
            return s;
        }
        static string asbin(string s)
        {
            string res = "";
            foreach (char c in s) res += chr2(c);
            return res;
        }

        



        private void richTextBox2_TextChanged(object sender, EventArgs e)
        {

        }

        private void chart1_Click(object sender, EventArgs e)
        {

        }
    }
}
Вы даже можете успешно запустить этот код в новом проекте, удалив несколько строчек. Я мог что-то забыть, но до настоящего времени это было неважно. Но захотел я воспользоваться вдруг классом RollingPointPairList http://jenyay.net/ZedGraph/RollingPoint
Я попробовал стандартный пример - все шикарно работает, сижу любуюсь. Ок, пришла пора включать в свой проект, ну раз я пишу про это - значит у меня не получилось. Начнем с азов, просто добавляю вот эту строчку в свой проект

Код:
RollingPointPairList _data;
, как и в примере RollingPoint, в том же месте... По идее компилятор должен понять и простить, но он не понимает. Он ругает меня и пишет непристойные, на мой первый взгляд, ошибки. Как вы видите, компилятор понимает PointPairList. Что я делаю не так?

Последний раз редактировалось Krasi; 12.10.2015 в 15:57.
Krasi вне форума Ответить с цитированием
Старый 12.10.2015, 16:09   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,706
По умолчанию

Цитата:
По идее компилятор должен понять и простить, но он не понимает. Он ругает меня и пишет непристойные, на мой первый взгляд, ошибки.
А что они засекречены или мы должны угадать их?
p51x вне форума Ответить с цитированием
Старый 12.10.2015, 16:10   #3
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

Или еще проще. Я создал сейчас пустой проект, а по ссылке, которую Вам представил выше, скопировал код стандартного примера. Включил dll, все ок. И... Жалуется, что класс RollingPointPairList не может быть найден. Что не так?

Цитата:
Error 1 The type or namespace name 'RollingPointPairList' could not be found (are you missing a using directive or an assembly reference?) c:\users\engineer\documents\visual studio 2013\Projects\WindowsFormsApplicati on1\WindowsFormsApplication1\Form1. cs 22 9 WindowsFormsApplication1

Последний раз редактировалось Stilet; 12.10.2015 в 16:13.
Krasi вне форума Ответить с цитированием
Старый 12.10.2015, 16:14   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Что не так?
А ты подключил эту сборку в ветку reference проекта? Насколько я помню одного using маловато будет.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.10.2015, 16:30   #5
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

Я подключил только ZedGraph.dll в reference. Может это не та версия, но она у меня строит статические графики, но не работает с классом RollingPointPairList _data;
Krasi вне форума Ответить с цитированием
Старый 13.10.2015, 09:05   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,706
По умолчанию

Выложите куда-нибудь ваш минимальный нерабочий проект.
p51x вне форума Ответить с цитированием
Старый 13.10.2015, 11:11   #7
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

Отправляю вариант моей программы, которая, по-моему, должна выводить на ZedGraph динамический график. Мне интересно то, что она не может найти класс, о котором ранее говорил
Вложения
Тип файла: zip WindowsFormsApplication1.zip (370.4 Кб, 17 просмотров)
Krasi вне форума Ответить с цитированием
Старый 13.10.2015, 11:44   #8
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,706
По умолчанию

Во-первых, где вы надыбали такую версию сборки? Возьмите с офа свежую и будет вам RollingPointPairList.
Во-вторых, понятие область видимости переменных вам известно? Вы в конструктору формы создаете переменную zedGraph, к которой вдруг пытаетесь обратится в другом методе.
В-третьих, не надо сборку добавлять в дерево проекта, добавляйте как референс.
p51x вне форума Ответить с цитированием
Старый 13.10.2015, 13:26   #9
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

Да, версия старая, я обновил и компилятор перестал ругаться на RollingPointPairList _data; ... Я сам не понял, как старая версия у меня оказалась.
Сейчас проблема попроще. У меня ошибок нет, но график просто не строится. Я думаю, что пишу я что-то неправильно. Вот файл
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

using ZedGraph;


namespace WindowsFormsApplication1
{ 
    public partial class Form1 : Form
    {
         
        /// <summary>
        /// Количество отображаемых точек
        /// </summary>
        int _capacity = 100;

        /// <summary>
        /// Здесь храним данные
        /// </summary>
        RollingPointPairList _data;

        // Параметры отображаемой синусоиды
        double _amplitude = 5;
        double _freq = 3;
        double _step = 0.1;

        // Текущее значение на графике
        double _currentx = 0;


        public Form1 ()
        {
            
            // !!! Создаем массив данных с ограниченной емкостью.
            // При превышениизаданной емкости первые элементы в массиве будут удаляться
            _data = new RollingPointPairList (_capacity);

            InitializeComponent ();
            PrepareGraph ();

        }


        /// <summary>
        /// Метод вызывается по таймеру
        /// </summary>
        private void timer_Tick(object sender, EventArgs e, ZedGraphControl zedGraph)
        {
            // Вычислим новое значение
            double newValue = _amplitude * Math.Sin (_currentx * _freq);

            // !!! Добавим новый отсчет к данным
            _data.Add (_currentx, newValue);
            _currentx += _step;

            // Рассчитаем интервал по оси X, который нужно отобразить на графике
            double xmin = _currentx - _capacity * _step;
            double xmax = _currentx;

           

            GraphPane pane = zedGraph.GraphPane;
            pane.XAxis.Scale.Min = xmin;
            pane.XAxis.Scale.Max = xmax;

            // Обновим оси
            zedGraph.AxisChange ();

            // Обновим сам график
            zedGraph.Invalidate ();
        }


        /// <summary>
        /// Подготовка к отображению данных
        /// </summary>
        private void PrepareGraph ()
        {
            ZedGraphControl zedGraph = new ZedGraphControl();
            zedGraph.Location = new System.Drawing.Point(100, 10);
            zedGraph.Name = "zedGraph";
            zedGraph.Size = new System.Drawing.Size(500, 300);
            this.Controls.Add(zedGraph);
            // Получим панель для рисования
            GraphPane pane = zedGraph.GraphPane;

            // Очистим список кривых на тот случай, если до этого сигналы уже были нарисованы
            pane.CurveList.Clear ();

            // Добавим кривую пока еще без каких-либо точек
            LineItem myCurve = pane.AddCurve ("sin (x)", _data, Color.Blue, SymbolType.None);

            // Устанавливаем интересующий нас интервал по оси Y
            pane.YAxis.Scale.Min = -_amplitude;
            pane.YAxis.Scale.Max = _amplitude;

            // Вызываем метод AxisChange (), чтобы обновить данные об осях. 
            zedGraph.AxisChange ();

            // Обновляем график
            zedGraph.Invalidate ();
        }
    }
}
Krasi вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вертикальная прямая в ZedGraph Евгений_1991 C# (си шарп) 0 10.11.2014 20:31
Ошибка zedGraph PinkPink C# (си шарп) 1 02.05.2013 23:41
Работа с ZedGraph vovoch C# (си шарп) 0 19.12.2012 00:40
Заморочка с ZedGraph sputnick Общие вопросы .NET 1 13.09.2010 09:42
ZedGraph cw_o Общие вопросы .NET 3 15.01.2010 00:23