Рисование в форме

Содержание

Слайд 2

Рисование Козьминых Н.М. Перо Кисть Объект класса Graphics

Рисование

Козьминых Н.М.
Перо
Кисть
Объект класса Graphics

Слайд 3

Класс Graphics Козьминых Н.М. Класс Graphics - это основной класс, необходимый

Класс Graphics

Козьминых Н.М.

Класс Graphics - это основной класс, необходимый для рисования,

находится в пространстве имен Drawing
Graphics graphPict = pctGraph.CreateGraphics();
Методы класса Graphics, включают 3 группы:
DrawString - вывод текста в графическом режиме
Draw (DrawEllipse, DrawLine) - рисование геометрических фигур цветным пером (объект класса Pen)
Fill (FillEllipse, FillRectangle) - рисование и закраска фигур кистью (объекты классов, производных от Brush)
Слайд 4

Класс Pen Козьминых Н.М. Рисование контура фигуры – методы группы Draw

Класс Pen

Козьминых Н.М.

Рисование контура фигуры – методы группы Draw класса Graphics
В

конструкторе могут задаваться цвет и толщина пера
Pen penGreen = new Pen(Color.Green, 3);
Класс перо, также имеет свойство стиль
penGreen.DashStyle = DashStyle.DashDot;
Слайд 5

Пример 1 Козьминых Н.М. Graphics g = this.CreateGraphics(); // Создает графический

Пример 1

Козьминых Н.М.

Graphics g = this.CreateGraphics(); // Создает графический объект и

связываем его с формой
g.Clear(Color.White) ; // цвет фона задаем белым
// Рисуем линию определенного стиля
Pen pen1 = new Pen(Color.Blue, 3.0f); // создаем перо синего цвета и толщиной 3 пикселя
pen1.DashStyle = System.Drawing.Drawing2D.DashStyle.Dash; // задаем стиль пера
g.DrawLine(pen1, 20,120, 100,60); // рисуем линию
Слайд 6

Класс Brush Козьминых Н.М. Класс Brush задает кисти, является абстрактным, можно

Класс Brush

Козьминых Н.М.

Класс Brush задает кисти, является абстрактным, можно создавать кисти

классов-потомков Brush
Пять классов-потомков:
SolidBrush - для сплошной закраски области заданным цветом
TextureBrush - для закраски области заданной картинкой (image)
HatchBrush - для закраски области предопределенным узором
LinearGradientBrush - для сплошной закраски с переходом от одного цвета к другому
PathGradientBrush - для сплошной закраски с переходом от одного цвета к другому
Слайд 7

Пример 2 Козьминых Н.М. // Рисуем закрашенный красный квадрат SolidBrush sb1

Пример 2

Козьминых Н.М.

// Рисуем закрашенный красный квадрат
SolidBrush sb1 = new SolidBrush(Color.Red);

// задаем заливку
g.FillRectangle(sb1, 60, 30, 40, 40); // рисуем закрашенный квадрат
// Рисуем закрашенный прямоугольник и его окантовку
SolidBrush sb2 = new SolidBrush(Color.Yellow);
Pen pen2 = new Pen(Color.Aqua, 2.0f);
pen2.DashStyle = System.Drawing.Drawing2D.DashStyle.Dot;
g.FillRectangle(sb2, 90,40, 60,45);
g.DrawRectangle(pen2, 90,40, 60,45);
Слайд 8

Пример 3 Козьминых Н.М. // Рисуем закрашенный эллипс System.Drawing.Drawing2D.HatchBrush hb1 =

Пример 3

Козьминых Н.М.

// Рисуем закрашенный эллипс
System.Drawing.Drawing2D.HatchBrush hb1 = new System.Drawing.Drawing2D.HatchBrush(System.Drawing.Drawing2D.HatchStyle.DiagonalCross, Color.Black,

Color.Green);
g.FillEllipse(hb1, 30,100, 65,50);
// Рисуем наклонный эллипс
Pen pen3 = new Pen(Color.Fuchsia, 2.0f);
pen3.DashStyle = System.Drawing.Drawing2D.DashStyle.DashDotDot;
g.ResetTransform();
g.RotateTransform(45);
g.DrawEllipse(pen3, 70, -10, 100, 50);
Слайд 9

Козьминых Н.М. Graphics g = this.CreateGraphics(); // Создает графический объект и

Козьминых Н.М.

Graphics g = this.CreateGraphics(); // Создает графический объект и

связываем его с формой
g.Clear(Color.White) ; // цвет фона задаем белым
// Рисуем линию определенного стиля
Pen pen1 = new Pen(Color.Blue, 3.0f); // создаем перо синего цвета и толщиной 3пик
pen1.DashStyle = System.Drawing.Drawing2D.DashStyle.Dash; // задаем стиль пера
g.DrawLine(pen1, 20,120, 100,60); // рисуем линию
// Рисуем закрашенный красный квадрат
SolidBrush sb1 = new SolidBrush(Color.Red); // задаем заливку
g.FillRectangle(sb1, 60, 30, 40, 40); // рисуем закрашенный квадрат
// Рисуем закрашенный прямоугольник и его окантовку
SolidBrush sb2 = new SolidBrush(Color.Yellow);
Pen pen2 = new Pen(Color.Aqua, 2.0f);
pen2.DashStyle = System.Drawing.Drawing2D.DashStyle.Dot;
g.FillRectangle(sb2, 90,40, 60,45);
g.DrawRectangle(pen2, 90,40, 60,45);
// Рисуем закрашенный эллипс
System.Drawing.Drawing2D.HatchBrush hb1 = new System.Drawing.Drawing2D.HatchBrush(System.Drawing.Drawing2D.HatchStyle.DiagonalCross, Color.Black, Color.Green);
g.FillEllipse(hb1, 30,100, 65,50);
// Рисуем наклонный эллипс
Pen pen3 = new Pen(Color.Fuchsia, 2.0f);
pen3.DashStyle = System.Drawing.Drawing2D.DashStyle.DashDotDot;
g.ResetTransform();
g.RotateTransform(45);
g.DrawEllipse(pen3, 70, -10, 100, 50);
Слайд 10

Пример 4 Козьминых Н.М. Graphics g = this.CreateGraphics(); g.Clear(Color.White); Point point1

Пример 4

Козьминых Н.М.

Graphics g = this.CreateGraphics();
g.Clear(Color.White);
Point point1 = new Point(0,100);
Point point2

= new Point(50,80);
Point point3 = new Point(100,20);
Point point4 = new Point(150,80);
Point point5 = new Point(200,100);
Point[] curvePoints = {point1,point2,point3,point4,point5};
Pen pen = new Pen(System.Drawing.Color.Aquamarine, 2f);
g.DrawCurve(pen, curvePoints);
foreach (Point point in curvePoints)
g.FillRectangle(Brushes.Red, new Rectangle(point, new Size(5,5)));
Слайд 11

Пример 5 Козьминых Н.М.

Пример 5

Козьминых Н.М.

Слайд 12

Пример 5, реализация Козьминых Н.М. Создать новый проект «Приложение Windows Forms»

Пример 5, реализация

Козьминых Н.М.

Создать новый проект «Приложение Windows Forms»
Создать обработчик события

формы Paint: Form1_Paint
Записать код в обработчик события:
Graphics gr = this.CreateGraphics();
gr.Clear(Color.White);
Запускаем на выполнение
Слайд 13

Пример 5, реализация Козьминых Н.М.

Пример 5, реализация

Козьминых Н.М.

Слайд 14

Пример 5, реализация Козьминых Н.М. Создать два пера Pen gray =

Пример 5, реализация

Козьминых Н.М.

Создать два пера
Pen gray = new Pen(Color.Gray);
Pen black

= new Pen(Color.Black, 3F);
Нарисовать ось ОХ и нанести значение координат
gr.DrawLine(gray, new Point(0, 0),
new Point(this.Width, 0));
for (int i = 0; i < this.Width; i+= 40)
gr.DrawString(i.ToString(), new Font("Arial", 10F), Brushes.Gray, new PointF(i, 5F));
Слайд 15

Пример 5, реализация Козьминых Н.М.

Пример 5, реализация

Козьминых Н.М.

Слайд 16

Пример 5, реализация Козьминых Н.М. После определения пера добавить код переноса

Пример 5, реализация

Козьминых Н.М.

После определения пера добавить код переноса начала координат
gr.TranslateTransform(30,

this.Height - 80);
Дорисовать ось ОУ
gr.DrawLine(gray, new Point(0, 0),
new Point(0, -this.Height));
Слайд 17

Пример 5, реализация Козьминых Н.М.

Пример 5, реализация

Козьминых Н.М.

Слайд 18

Пример 5, реализация Козьминых Н.М. // Стена Point pointLeftTop = new

Пример 5, реализация

Козьминых Н.М.

// Стена
Point pointLeftTop = new Point(0, -80);
gr.DrawRectangle(black, new

Rectangle(pointLeftTop, new Size(100, 80)));
// Крыша
Point[] trianglePoints = {
pointLeftTop,
new Point(50, -120),
new Point(100, -80)
};
gr.DrawPolygon(black, trianglePoints);
// Окна
Size window = new Size(30, 30);
gr.DrawRectangle(black, new Rectangle(new Point(10, -60), window));
gr.DrawRectangle(black, new Rectangle(new Point(60, -60), window));
Слайд 19

Пример 5, реализация Козьминых Н.М.

Пример 5, реализация

Козьминых Н.М.

Слайд 20

Пример 5, реализация Козьминых Н.М. После кода с переносом начала координат,

Пример 5, реализация

Козьминых Н.М.

После кода с переносом начала координат, добавить код

масштабирования в 1.5 раза
gr.ScaleTransform(1.5F, 1.5F);
Слайд 21

Пример 5, реализация Козьминых Н.М.

Пример 5, реализация

Козьминых Н.М.

Слайд 22

Козьминых Н.М. public partial class Form1 : Form { public Form1()

Козьминых Н.М.

public partial class Form1 : Form {
public Form1()

{ InitializeComponent(); }
private void Form1_Paint(object sender, PaintEventArgs e) {
Graphics gr = this.CreateGraphics();
gr.Clear(Color.White);
Pen gray = new Pen(Color.Gray);
Pen black = new Pen(Color.Black, 3F);
// Перенос начала координат
gr.TranslateTransform(30, this.Height - 80);
// Масштабирование
gr.ScaleTransform(1.5F, 1.5F);
// Координатная ось OX
gr.DrawLine(gray, new Point(0, 0), new Point(this.Width, 0));
for (int i = 0; i < this.Width; i+= 40)
gr.DrawString(i.ToString(), new Font("Arial", 10F), Brushes.Gray, new PointF(i, 5F));
// Координатная ось OY
gr.DrawLine(gray, new Point(0, 0), new Point(0, -this.Height));
// Стена
Point pointLeftTop = new Point(0, -80);
gr.DrawRectangle(black, new Rectangle(pointLeftTop, new Size(100, 80)));
// Крыша
Point[] trianglePoints = {
pointLeftTop,
new Point(50, -120),
new Point(100, -80)
};
gr.DrawPolygon(black, trianglePoints);
// Окна
Size window = new Size(30, 30);
gr.DrawRectangle(black, new Rectangle(new Point(10, -60), window));
gr.DrawRectangle(black, new Rectangle(new Point(60, -60), window));
}
}