Лабораторная работа 16. Разработка приложений с использованием средств для отображения графической информации в среде Microsoft
Скачать 420.96 Kb.
|
ЛАБОРАТОРНАЯ РАБОТА № 16. Разработка приложений с использованием средств для отображения графической информации в среде Microsoft Visual Studio 1 Цель работы Изучить возможности построения графиков с помощью компонентов отображения графической информации Сhart и PictureBox. Получить практические навыки в написании и отладке программ построения на экране графика заданной функции. 2 Порядок выполнения работы Внимательно изучить краткую теорию работы. Выполнить самостоятельно примеры задания из раздела 5. Получить задание на выполнение лабораторной работы (раздел 6) согласно своему варианту. Разработать и отладить программу. Составить и защитить отчет о лабораторной работе у преподавателя. 3 Содержание отчета наименование и цель работы. задание на лабораторную работу согласно варианту. текст программы на алгоритмическом языке. результаты работы программы. 4 Краткая теория 4.1 Построение графика с помощью компонента Chart в Microsoft Visual Studio Компонент Chart позволяет строить различные графики. Основное свойство компонента – Series, представляет собой коллекцию (специальный двухмерный массив). Так, построение графика (диаграммы) производится после вычисления таблицы значений функции y = f(x) на интервале [Xmin, Xmax] с заданным шагом. Поскольку Series коллекция, то позволяет строить на одном компоненте несколько графиков. По умолчанию серия одна, индекс 0. К серии можно обращаться по индексу, например, 0 или имени, например, Series1. Компонент Chart имеет различные свойства и методы. 4.2 Моделирование графика с помощью компонента PictureBox в Microsoft Visual Studio Обычно PictureBox используется для отображения графики из растрового изображения, метафайла, значка, JPEG, GIF-файла или PNG-файла. Для установки изображения в PictureBox можно использовать ряд свойств: Image: устанавливает объект типа Image; ImageLocation: устанавливает путь к изображению на диске или в интернете; InitialImage: некоторое начальное изображение, которое будет отображаться во время загрузки главного изображения, которое хранится в свойстве Image; ErrorImage: изображение, которое отображается, если основное изображение не удалось загрузить в PictureBox. Однако, в PictureBoxтакже можно рисовать, в том числе, графики функций. 5 Примеры разработки программ 5.1 Пример разработки графика в Microsoft Visual Studio с использованием компонента Chart Задание: составить программу, отображающую графики функций sin(x) и cos(x) на интервале [Xmin, Xmax]. Предусмотреть возможность изменения разметки координатных осей, а также шага построения таблицы. 5.1.1 Настройка формы Панель диалога программы организуется в виде, представленном на рисунке 5.1. Рисунок 5.1 – Использование компонента TChart 5.1.2 Работа с компонентом Chart Для изменения параметров (свойств) компонента Chart необходимо вызвать окно его свойств. Выбирая нужные свойства производим настройку. Например, для добавления и настройки графика необходимо открыть коллекцию Series (рисунок 5.2). Рисунок 5.2 – Окно редактирования коллекции Series 5.1.3 Запись кода обработки событий нажатия на кнопки Функция Form1_Load задает начальные значения параметров графика и размечает оси. Функция button1_Click обрабатывает нажатие кнопки «Разместить оси». Функция button2_Click обрабатывает нажатие кнопки «Построить график». Для добавления координат точек из таблицы в двумерный массив объекта Seriesk используется функция AddXY(double xValue, double yValue), где xValue, yValue – координаты точки по осям X и Y. 5.1.4 Текст программы Проверить наличие пространства имен using System.Drawing; using System.Windows.Forms.DataVisualization.Charting; Объявить переменные глобально: double Xmin,Xmax,Ymin,Ymax,Hx,Hy,h; private void Form1_Load(object sender, EventArgs e) { Xmin = 0; Xmax = 2 * Math.PI; Ymin = -1; Ymax = 1; Hx = Math.PI/2; Hy = 0.5; h = 0.01; // Установка шага расчета таблицы // Вывод данных в окна однострочных редакторов textBox1.Text = Convert.ToString(Xmin); textBox2.Text = Convert.ToString(Xmax); textBox3.Text = Convert.ToString(Ymin); textBox4.Text = Convert.ToString(Ymax); textBox5.Text = Convert.ToString(Hx); textBox6.Text = Convert.ToString(Hy); textBox7.Text = Convert.ToString(h); // Отключение автоматического определения пар-ров оси X chart1.ChartAreas[0].AxisX.IsLabelAutoFit=false; // Установка левой границы нижней оси chart1.ChartAreas[0].AxisX.Minimum=Xmin; //Установка правой границы нижней оси chart1.ChartAreas[0].AxisX.Maximum=Xmax; // Отключение автоматического определения пар-ров оси Y chart1.ChartAreas[0].AxisY.IsLabelAutoFit=false; // Установка нижней границы левой оси chart1.ChartAreas[0].AxisY.Minimum=Ymin; // Установка верхней границы левой оси chart1.ChartAreas[0].AxisY.Maximum=Ymax; // Установка шага разметки по нижней оси chart1.ChartAreas[0].AxisX.Interval=Hx; // Установка шага разметки по левой оси chart1.ChartAreas[0].AxisY.Interval=Hy; } private void button1_Click(object sender, EventArgs e) { Xmin = Convert.ToDouble(textBox1.Text); Xmax = Convert.ToDouble(textBox2.Text); Ymin = Convert.ToDouble(textBox3.Text); Ymax = Convert.ToDouble(textBox4.Text); Hx = Convert.ToDouble(textBox5.Text); Hy = Convert.ToDouble(textBox6.Text); h= Convert.ToDouble(textBox7.Text); // Установка левой границы нижней оси chart1.ChartAreas[0].AxisX.Minimum=Xmin; //Установка правой границы нижней оси chart1.ChartAreas[0].AxisX.Maximum=Xmax; // Установка нижней границы левой оси chart1.ChartAreas[0].AxisY.Minimum=Ymin; // Установка верхней границы левой оси chart1.ChartAreas[0].AxisY.Maximum=Ymax; // Установка шага разметки по нижней оси chart1.ChartAreas[0].AxisX.Interval=Hx; // Установка шага разметки по левой оси chart1.ChartAreas[0].AxisY.Interval=Hy; } private void button2_Click(object sender, EventArgs e) { chart1.Series[0].Points.Clear();//очистка графиков chart1.Series[1].Points.Clear();//очистка графиков double x,y1,y2; x = Xmin; //начальное значение по Х while (x <= Xmax) { y1 = sin(x);//расчет функции //вывод точки на график chart1.Series[0].Points.AddXY(x,y1); y2 = cos(x);//расчет функции //вывод точки на график chart1.Series[1].Points.AddXY(x,y2); //увеличение значения Х на величину шага x += h; } /*или через for for (x = Xmin; x { y1 = sin(x);//расчет функции chart1.Series[0].Points.AddXY(x,y1); y2 = cos(x);//расчет функции chart1.Series[1].Points.AddXY(x,y2); } */ } 5.2 Пример разработки графика в Microsoft Visual Studio с использованием компонента pictureBox Задание: составить программу, моделирующую график функции sin(x) 5.2.1 Настройка формы Панель диалога программы организуется в виде, представленном на рисунке 5.3. Рисунок 5.3 – Использование компонента pictureBox 5.2.2 Текст программы private void button1_Click(object sender, EventArgs e) { // Объявляем объект "g" класса Graphics и предоставляем // ему возможность рисования на pictureBox1: Graphics g = pictureBox1.CreateGraphics(); int cx = pictureBox1.Width; int cy = pictureBox1.Height / 2; PointF[] ptf = new PointF[cx]; // число волн int cw = Convert.ToInt32(textBox1.Text); // Очистим PictureBox g.Clear(pictureBox1.BackColor); for (int i = 0; i < cx; i++) { ptf[i].X = i; ptf[i].Y = (float)((cy / 2) * (1 - Math.Sin(i * cw * Math.PI / (cx - 1)))); } g.DrawLines(Pens.Red, ptf); //очистка g.Dispose(); } 6 Задания для самостоятельной работы Задание 1 Постройте графики функций с использованием компонента chart для соответствующих вариантов. Таблицу данных получить, изменяя параметр X с шагом h. Ввод исходных данных организовать через компоненты. Самостоятельно выбрать удобные параметры настройки. Обязательно реализовать проверку правильности ввода исходных данных: левая граница по оси х меньше правой, заполнены все поля перед выводом графика, причем проверить ввод именно числовых данных в поля. Проверку организовать, в том числе, с использованием технологии обработки исключительных ситуаций. Задание 2 Смоделируйте график функции согласно варианту с использованием компонента pictureBox. Если необходимо, то измените в исходных данных варианта, например, шаг, диапазон аргумента и т. д. Задайте нужный цвет, толщину линии, размер формы. |