Создание контекста отображения

  • docx
  • 18.11.2021
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала Л2-002235.docx

Создание контекста отображения

Контекст отображения это объект класса 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();

}

}

}