Рисование в окне элемента управления
Оценка 4.7

Рисование в окне элемента управления

Оценка 4.7
docx
18.11.2021
Рисование в окне элемента управления
Л2-002237.docx

Рисование в окне элемента управления

Необходимо  получить   контекст  отображения  для  окна  элемента управления (например, панели)

 

/* Graphics_Panel вторая программа с графикой .

Программа рисует в панели траекторию перемещения курсора мыши при нажатой клавише и перестает рисовать траекторию при отпускании клавиши.

Способ рисования: при перемещении курсора в окне панели поступает сообщение

Move с координатами курсора, в которые выводится круг диаметром 10 пикселей.

Отличия от программы Graphics_Move показаны жирным шрифтом.

*/

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 panel1_MouseDown(object sender, MouseEventArgs e)

{ doDraw = true; }                // клавиша нажата

 

private void panel1_MouseUp (object sender, MouseEventArgs e)

{ doDraw = false; }                // клавиша отпущена

 

 

private void panel1_MouseMove(object sender, MouseEventArgs e)

{

if (doDraw)

{

Graphics g = panel1.CreateGraphics();

SolidBrush redBrush = new SolidBrush (Color.Red);

 

/* Вывод закрашенного эллипса в координатах e.X, e.Y

шириной 10 и высотой 10 пикселей с использ. кисти redBrush */ g.FillEllipse (redBrush, e.X, e.Y, 10, 10);

g.Dispose();

}

}

}


рис.6

 

 

Событие Paint


рис.7


рис.8

 

Когда вся клиентская область окна формы или часть этой области требует перерисовки, форме передается событие 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()); }

 

 

public string text = "Обработка события Paint";      // моя строка

 

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

{

Graphics g = e.Graphics; /* е – ссылка на объект, имеющий свойства: - Graphics контекст устройства

- ClipRectangle границы области перерисовки

*/

g.Clear (Color.White);         // Закрасить окно белым цветом

 

/* Вывод строки text с использ. объекта Font и свойства Black

статич. класса System.Drawing.Brushes, в координатах 0,0 */ g.DrawString (text, new Font(”Arial”, 15), Brushes.Black, 0, 0);

 

/* Вывод незакрашенного прямоугольника в координатах 10,30 шириной 200 и высотой 100 пикселей с использ. пера - объекта Pen, инициализированного цветом Brushes.Green с шириной линий 2 пикселя */

g.DrawRectangle (new Pen(Brushes.Green,2), 10, 30, 200, 100);

 

// Вывод незакрашенного эллипса

g.DrawEllipse (new Pen(Brushes.Red,8), 150, 120, 100, 130);

}

}

 

1.

Graphics g = e.Graphics;      e определяет только часть окна для пе- рерисовки.

 

2.

Graphics g = Graphics.FromНwnd (this.Handle);   е определяет для пе- рерисовывания все окно.

 


 

Рисование в окне элемента управления

Рисование в окне элемента управления

}

}

Событие Paint рис.7

Событие Paint рис.7

Когда вся клиентская область окна формы или часть этой области требует перерисовки, форме передается событие

Когда вся клиентская область окна формы или часть этой области требует перерисовки, форме передается событие

Dispose(); base.Dispose( disposing ); } +

Dispose(); base.Dispose( disposing ); } +
Материалы на данной страницы взяты из открытых истончиков либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.