Генерация сообщения 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);

 

}

 



Дата добавления: 2019-02-08; просмотров: 576;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.01 сек.