Генерация сообщения Paint и перерисовка содержимого окна
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Можно сгенерировать собщение Paint вручную с помощью метода

окно.Invalidate();

При этом произойдет очистка окна.

 

// Демонстрация генерации сообщения Paint

// и перерисовки содержимого окна.

// Программа запоминает координаты курсора в момент щелчка

// клавиши мыши и генерирует сообщение Paint.

// При обработке сообщения Paint выводится прямоугольник в

// запомненных координатах.

 

using System;

using System.Drawing;

using System.Windows.Forms;

 

public class Form1 : Forms.Form

{

private System.ComponentModel.Container components = null;

 

public Form1() { InitializeComponent(); }

 

protected override void Dispose( bool disposing )

{

            if( disposing )

                        if (components != null)

                         components.Dispose();

            base.Dispose( disposing );

}

 

+ Windows Form Designer generation code

 

static void Main()

{ Application.Run(new Form1()); }

 

 int X, Y;   // координаты курсора мыши

 

void Form1_MouseDown (object sender, MouseEventArgs e)

{

            X = e.X; Y = e.Y;

            Invalidate();           // генерация Paint

}

 

private void Form1_Paint (object sender, Forms.PaintEventArgs e)

{

if ( X > 0 & Y > 0 )

    g.DrawRectangle (new Pen (Brushes.Green,2), X, Y, 200, 100);

}

}

 

Методы и свойства класса Graphics

Очистка окна. Пример: закрасить окно белым цветом

 

g.Clear (Color.White);

 

 

Рисование геометрических фигур

Имена большого количества методов, определенных в классе Graphics, начинаются с префиксов Draw и Fill.

 

Первые из них предназначены для рисования текста, ли­ний и незакрашенных фигур (таких, например, как прямоугольные рамки),

а вторые - для рисования закрашенных геометри­чес­ких фигур.

 

Линия

public void DrawLine (Pen, Point, Point);

public void DrawLine (Pen, PointF, PoinF);

public void DrawLine (Pen, int, int, int, int);

public void DrawLine (Pen, float, float, float, float);

 

Для получения такого окна добавьте в обработку события Paint код, приведенный ниже:

 

рис.9

 

private void Form1_Paint(object sender, PaintEventArgs e)

{

Graphics g = e.Graphics ;

g.Clear (Color.White) ;

 

Pen pen = new Pen (Brushes.Black, 2);

 

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

            g.DrawLine (pen, 10, 4*i+20, 200, 4*i+20) ;

}

 

Набор линий

 

public void DrawLines (Pen, Point[ ]);

public void DrawLines (Pen, PointF[ ]);

 

Пример вывода соединяющихся линий.

 

рис.10

 

using System.Drawing.Drawing2D;

 

// Добавить в конструктор

            Point[] points = new Point[50];

 

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

            {

                   int xPos;

                        if (i%2 == 0)

                                    xPos=10;

                        else

                                    xPos=400;

 

                        points[i] = new Point(xPos, 10 * i);

            }

 

            Pen pen = new Pen(Brushes.Black, 2);

. . . . . . . . . .

 

            private void Form1_Paint(object sender, PaintEventArgs e)

            {

                        Graphics g = e.Graphics ;

                        g.Clear (Color .White) ;

 

                        // Высококачественное сглаживание

                        g.SmoothingMode = SmoothingMode.HighQuality;

               g.DrawLines (pen, points);

 

            }

 

Незакрашенный прямоугольник

Метод DrawRectangle позволяет рисовать прямоугольники, заданные координатами верхнего левого угла, а также шириной и высотой.

 

public void DrawRectangle (Pen, Rectangle); 

public void DrawRectangle (Pen, int, int, int, int);

public void DrawRectangle (Pen, float, float, float, float);

 

Класс Rectangle имеет свойства:

           X и Y,

           Width и Height.

 

Дата: 2019-02-02, просмотров: 253.