Создание контекста отображения
Контекст отображения – это объект класса Graphics.
1. Для рабочей области:
или
Graphics g = Graphics.FromНwnd (this.Handle); Graphics g =this.CreateGraphics();
this.CreateGraphics() – возвращает объект
класса Graphics (контекст отображения).
2. Для элемента управления:
Graphics g = Graphics.FromНwnd (<Эл.управления>.Handle);
или
Graphics g =<Эл.управления>.CreateGraphics();
Пример. Graphics g = panel1.CreateGraphics();
В обработчике событий
Form1_Paint (object sender, Forms.PaintEventArgs e) Graphics g = e.Graphics;
Примечание. Такой контекст устройства делает доступным для пере- рисовки только реально «испорченную» часть окна.
Если запрограммирована перерисовка всего окна, то контекст устрой- ства надо создавать первым или вторым способом.
Пример 1. Рисование траектории перемещения курсора при нажатой кнопке мыши.
// Move_Veer – первая программа с графикой.
// Программа рисует траекторию перемещения курсора мыши при
// нажатой клавише и перестает рисовать траекторию при
// отпускании клавиши.
// Способ рисования: при перемещении курсора поступает
// сообщение Move c координатами курсора,
// в которые выводится квадрат со стороной 4 пикселя.
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()); }
bool doDraw = false; // клавиша мыши отпущена
private void Form1_MouseDown (object sender, MouseEventArgs e)
{ doDraw = true; } // клавиша нажата
private void Form1_MouseUp (object sender, MouseEventArgs e)
{ doDraw = false; } // клавиша отпущена
private void Form1_MouseMove (object sender, MouseEventArgs e)
// e – объект, определяющий координаты курсора (е.X, е.Y)
{
if (doDraw)
{
Graphics g = this.CreateGraphics();
/* Создать объект redBrush – сплошная кисть красного цвета. Color – структура System.Drawing.Color */
SolidBrush redBrush = new SolidBrush (Color.Red);
/* Вывод закрашенного прямоугольника в координатах e.X, e.Y шириной 4 и высотой 4 пикселя с использ. кисти redBrush */ g.FillRectangle (redBrush, e.X, e.Y, 4, 4);
g.Dispose();
}
}
}
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.