Слайд 1Лекция 13.
Рисование в форме
дисциплина «Программирование»
Козьминых Н.М.
Слайд 2Рисование
Козьминых Н.М.
Перо
Кисть
Объект класса Graphics
Слайд 3Класс Graphics
Козьминых Н.М.
Класс Graphics - это основной класс, необходимый для
рисования, находится в пространстве имен Drawing
Graphics graphPict = pctGraph.CreateGraphics();
Методы класса
Graphics, включают 3 группы:
DrawString - вывод текста в графическом режиме
Draw (DrawEllipse, DrawLine) - рисование геометрических фигур цветным пером (объект класса Pen)
Fill (FillEllipse, FillRectangle) - рисование и закраска фигур кистью (объекты классов, производных от Brush)
Слайд 4Класс Pen
Козьминых Н.М.
Рисование контура фигуры – методы группы Draw класса
Graphics
В конструкторе могут задаваться цвет и толщина пера
Pen penGreen
= new Pen(Color.Green, 3);
Класс перо, также имеет свойство стиль
penGreen.DashStyle = DashStyle.DashDot;
Слайд 5Пример 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
Пять классов-потомков:
SolidBrush - для сплошной закраски области заданным
цветом
TextureBrush - для закраски области заданной картинкой (image)
HatchBrush - для закраски области предопределенным узором
LinearGradientBrush - для сплошной закраски с переходом от одного цвета к другому
PathGradientBrush - для сплошной закраски с переходом от одного цвета к другому
Слайд 7Пример 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 = 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(); // Создает графический объект и связываем его с формой
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 = 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)));
Слайд 12Пример 5, реализация
Козьминых Н.М.
Создать новый проект «Приложение Windows Forms»
Создать обработчик
события формы Paint: Form1_Paint
Записать код в обработчик события:
Graphics gr =
this.CreateGraphics();
gr.Clear(Color.White);
Запускаем на выполнение
Слайд 13Пример 5, реализация
Козьминых Н.М.
Слайд 14Пример 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, реализация
Козьминых Н.М.
Слайд 16Пример 5, реализация
Козьминых Н.М.
После определения пера добавить код переноса начала
координат
gr.TranslateTransform(30, this.Height - 80);
Дорисовать ось ОУ
gr.DrawLine(gray, new Point(0, 0),
new
Point(0, -this.Height));
Слайд 17Пример 5, реализация
Козьминых Н.М.
Слайд 18Пример 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, реализация
Козьминых Н.М.
Слайд 20Пример 5, реализация
Козьминых Н.М.
После кода с переносом начала координат, добавить
код масштабирования в 1.5 раза
gr.ScaleTransform(1.5F, 1.5F);
Слайд 21Пример 5, реализация
Козьминых Н.М.
Слайд 22
Козьминых Н.М.
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));
}
}
Слайд 23Вопросы…
Спасибо за внимание
Козьминых Н.М.