Генерация сообщения 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; просмотров: 681;