Создание объекта Graphics пространства имен System.Drawing для рисования

Класс Graphics является основой интерфейса GDI+ (специальная библиотека). Этот класс непосредственно выполняет рисование прямых и кривых линий, геометрических фигур, вывод рисунков и текста.

Перед тем как рисовать линии и фигуры, отображать текст, выводить изображения и управлять ими, необходимо создать объект класса Graphics. Объект Graphics представляет поверхность рисования и является объектом, который используется для создания графических изображений.

Откройте окно конструктора Windows Forms с формой Windows. Выделите форму. В окне «Свойства» нажмите значок событие :

Выберите из списка событие Paint и дважды нажмите мышью строку списка:

Visual C# вставил метод с именем Form1_Paint, который выполняется при перерисовке элемента управления – формы. Далее необходимо получить ссылку на объект Graphics из объекта PaintEventArgs в событии Paint:

1) объявите объект Graphics;

2) присвойте переменной ссылку на объект Graphics, передаваемый как часть PaintEventArgs (PaintEventArgs – класс, предоставляющий данные для события Paint);

3) вставьте код для рисования формы или элемента управления.

Пример 8.5. Рисование линии на форму:

using System;

using System.Drawing;

using System.Windows.Forms;

namespace WindowsFormsApplication1

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void Form1_Paint(

object sender, PaintEventArgs e)

{

Graphics g = e.Graphics;

g.DrawLine(new Pen(Color.Blue, 2.0f), 100,

100, 200, 200);

}

 

}

}

Замечания

1. При создании экземпляра g класса Graphics ему передается ссылка на форму, куда нужно выводить рисунок (график). Информация о форме содержится в свойстве Graphics экземпляра e класса PaintEventArg.

2. Метод DrawLine предназначен для вывода линии, Pen – класс, предоставляющий перо для вычерчивания линии. Первый аргумент задает цвет линии, второй – ее толщину, выраженную числом типа float. Остальные параметры задают координаты начала и конца линии.

При рисовании графика необходимо иметь в виду, что координата (0, 0) формы находится в верхнем левом углу. Перенести точку (0, 0) начала координат можно используя метод TranslateTransform, указав в качестве аргументов величину сдвига вдоль осей X и Y. Ось Y направлена вниз. Поэтому необходимо отразить график относительно оси Y, поставить перед координатой y знак минус.

Пример 8.6. Построить по точкам график функции y = x2 при
x = –10, –9, –8,… ,10:

using System;

using System.Drawing;

using System.Windows.Forms;

namespace WindowsFormsApplication1

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void Form1_Paint(

object sender, PaintEventArgs e)

{

Graphics g = e.Graphics;

// this в данном случае – форма

int xc = this.Width / 2;

int yc = this.Height / 2;

g.TranslateTransform(xc, yc);

g.DrawEllipse(new Pen(Color.Red, 8.0f),

0, 0, 1, 1);

int x, y;

//вычерчивание осей координат

g.DrawLine(new Pen(Color.Brown, 1.0f),

-200, 0, 200, 0);

g.DrawLine(new Pen(Color.Brown, 1.0f),

0, -200, 0, 200);

//Вычерчивание осей координат

for (x = -10; x <= 10; x += 1)

{

y = x * x;

g.DrawEllipse(

new Pen(Color.Blue, 2.0f),

x * 5, -y, 1, 1);

}

}

}

}

Замечания

1. Здесь введен масштаб по оси х, растягивающий ось в 5 раз.

2. Метод DrawEllipse рисует окружность, вписанную в квадрат со сторонами 1, 1 (последние два аргумента метода DrawEllipse, определяющие толщину точки) для каждой точки графика.

3. Точка начала координат (xc, yc) переносится в середину формы, Для этого вначале xc, yc вычисляются делением пополам ширины Width и высоты Height формы.

Вопросы для самопроверки

1. Что такое экранные формы и каковы преимущества их использования?

2. Элементы управления TextBox, Button, RichTextBox. В каких случаях целесообразно их использование?

3. Класс Graphics. Рисование прямых линий.

4. Рисование графиков. Масштабирование при рисовании графиков.

Задания для самостоятельного выполнения

Составить программы для решения указанных задач. В задачах 1–8 использовать элемент управления «Кнопка» (Button). В задачах 1, 2 использовать элемент управления TextBox.

1. Вычислить c = a + b, вводя исходные данные в два текстовых поля (TextBox), в третье – вывести результат.

2. Вычислить сумму первых n натуральных чисел, вводя значение n в одно текстовое поле, результат вывести во второе текстовое поле.

В задачах 3 – 8 использовать элемент управления RichTextBox.

3. Решить задачу 1, вводя исходные данные в элемент управления RichTextBox, результат вывести в текстовое поле TextBox.

4. Ввести пять различных чисел в RichTextBox1, разделяя их пробелами. Умножить каждое из этих чисел на 2 и вывести в RichTextBox2, каждое в новую строку, снабдив результат заголовком.

5. Элементы массива размера 6 поместить в RichTextBox1. Найти максимальный элемент массива и вывести его в TextBox.

6. Решить задачу 5, помещая результат с заголовком в RichTextBox.

7. Два массива размера 6 поместить в RichTextBox1 и RichTextBox2. Найти сумму этих массивов, суммируя каждую пару элементов. Результат с заголовком поместить в RichTextBox3.

8. Матрицу размера 4 × 4 разместить в RichTextBox1. Сформировать массив из сумм элементов строк и поместить его в RichTextBox2.

В задачах 9–15 построить график функции при , разбивая отрезок на n частей. График начертить точками или отрезками прямых линий по указанию преподавателя, выполнив предварительно масштабирование. При вычерчивании графика функции предусмотреть вывод координатных осей.

9.

10.

11.

12.

13. z = x2 – 18x + 72; a = 5, b = 20, n = 40.

14. z = x3 + 5x2 + 14x – 56; a = 1, b = 10, n = 40.

15.