Виртуальная реальность

Лабораторная работа №7. Графика

Пространство имен System.Drawing обеспечивает доступ к функциональным возможностям графического интерфейса GDI+ Windows. Класс Graphics предоставляет методы рисования на устройстве отображения.

Рассмотрим пример использования графических возможностей С# для метода DrawLine класса Graphics .

Задача: На форме, в модуле pictureBox посторить треугольник, заданный прямоугольными координатами вершин. Координаты должны быть заданы относительно pictureBox.

Рисование в pictureBox имеет то преимущество, что при сворачивании формы прорисованные объекты сохраняются. Если же рисовать непосредственно в поле формы, то этого не происходит.

Создадим новый проект Windows Form

Поместим на форме два контролла из панели инструментов: кнопку Button1 и окно для рисунка pictureBox1. Начальное положение и размеры этих объектов могут быть произвольными, далее программно мы их «причешем».

Создадим в нашем коде функцию загрузки формы, для этого в конструкторе формы дважды щелкнем мышкой на поле формы – создастся процедура private void Form1_Load(object sender, System.EventArgs e)

Создадим в нашем коде функцию- события одного щелчка по кнопке Button1, для этого в конструкторе формы дважды щелкнем мышкой на этой кнопке – создастся процедура private void button1_Click(object sender, EventArgs e).

Создадим в нашем коде функцию- события рисования pictureBox1, для этого в конструкторе формы правой кнопкой мышки щелкнем на pictureBox1 и выберем «Свойства». В свойства pictureBox1 выберм вкладку «События» и выберм событие Paint, дважды щелкнем мышкой на этом элементе списка – создастся процедура private void pictureBox1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)

Далее дописываем код, как показано ниже. Все действия в программе откомментированы, надеюсь все понятно.

Ключевой строчкой в коде является:

pictureBox1.Paint += new System.Windows.Forms.PaintEventHandler(this.pictureBox1_Paint);

Она связывает событие рисования на pictureBox1 с процедурой pictureBox1_Paint.

Запускаем проект на выполнение и кликаем по кнопке «Построить».

Листинг 7.1:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

// Пространство имен для графики, эта строчка вставляется автоматически при создании проекта.

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace WindowsFormsApplication1

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

float[] x = { 100.78F, 50.12F, 200.99F }; // Массив х-кординат треугольника

float[] y = { 100.45F, 200.77F, 300.18F }; // Массив y-кординат треугольника

private void Form1_Load(object sender, System.EventArgs e)

{

// Задаем размер нашей формы

this.Height = 700;

this.Width = 900;

// Задаем положение pictureBox1, координаты левого верхнего угла относительно формы

this.pictureBox1.Location = new System.Drawing.Point(40, 40);

// Задаем размер pictureBox1

this.pictureBox1.Width = 600;

this.pictureBox1.Height = 500;

// Помещаем кнопку button1 в нижний правый угол формы

this.button1.Left = this.Width — this.button1.Width — 10;

this.button1.Top = this.Height — this.button1.Height-40;

this.button1.Text = «Построить»;

}

private void pictureBox1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)

{

// Создаем локальную версию графического объекта для PictureBox

Graphics g = e.Graphics;

// Прорисовка отрезков сторон треугольника

g.DrawLine(Pens.Red, x[0], y[0], x[1], y[1]);

g.DrawLine(Pens.Red, x[1], y[1], x[2], y[2]);

g.DrawLine(Pens.Red, x[0], y[0], x[2], y[2]);

}

private void button1_Click(object sender, EventArgs e)

{

pictureBox1.BackColor = Color.White;

pictureBox1.Visible = true;

// Connect the Paint event of the PictureBox to the event handler method.

pictureBox1.Paint += new System.Windows.Forms.PaintEventHandler(this.pictureBox1_Paint);

}

}

}

Для построение графика функции косинуса требуется осуществить следующее.

И так, создаем новый проект Windows Forms Application. Получили форму, заходим в ToolBox, в категории Data выбираем Chart, кликаем на него дважды. Получается как на рис.7.1

Рис.7.1. Компонент построения графиков

Заходим в Properties, в разделе Layout выбираем тип заливки, я в своей программе использовал среднюю кнопочку. Fill в свою очередь означает, что компонент займет все пространство на форме, и будет менять свои размеры с размерами формы.

В колонке справа (рис.7.2) есть свойства этого графика, в нем ищем CharType, выбираем Spline. Ищем LegendText, пишем sin(x). Если вас не устраивает цвет, который нам предлагает система вы можете выбрать свой, для этого в тех же свойствах ищем Appearance, и в нем смотрим Color, ставим какой нравится (я поставил розовый, magenta). Теперь под левой колонкой ищем Add, этим вы добавили еще один график для работы, настраиваем его так же, пишем cos(x).

загрузка…

Рис.7.2. Настройка компонента построения графиков

Сделаем чтоб графики рисовались при запуске программы. Для этого дважды кликаем на форме, лучше в шапке формы, где нету объекта Chart.

Должна создаться функция

private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {

}

Теперь проходим вверх по коду (в самый верх), ищем где у нас подключаются пространства имен, точнее ищем где пишет:

Код:

using namespace System;

using namespace System::ComponentModel;

using namespace System::Collections;

using namespace System::Windows::Forms;

using namespace System::Data;

using namespace System::Drawing;

Ниже добавляем

Код:

using namespace System::Windows::Forms::DataVisualization::Charting;

А в самом верху пишем #include

Теперь возвращаемся к нашей функции формы, в ней пишем такой код:

Код:

Series^ plot = chart1->Series[0];

Series^ plot2 = chart1->Series[1];

double d=0.1;

for (int i=0; i<100; i++)

{

plot->Points->AddXY(i*d-5, sin(i*d-5.0));

plot2->Points->AddXY(i*d-5, cos(i*d-5.0));

}

Запускаем программу и видим что-то типа такого (рис.7.3):

Рис.7.3. Вид графика функции

Задания к лабораторной работе 7:

1. Изучить предлагаемую теорию.

2. Записать и откомпилировать программу листинга 7.1, использующие графический интерфейс.

3. Записать и откомпилировать программу построения графиков синуса и косинуса.

4. Выполнить домашние задания (тема 7, тема 9), согласно номеру варианта.


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *