Работа с графикой посредством возможностей MFC (Лабораторная работа № 9 по VisualC++ 2005), страница 2

Стиль пера

Описание

PS_SOLID

Сплошная линия

PS_DASH

Пунктирнаялиния

PS_DOT

Точечнаялиния

PS_DASHDOT

Штрихпунктирнаялиния

PS_DASHDOTDOT

-*- сдвойнымиточками

PS_NULL

Пероничегонерисует

PS_INSIDEFRAME

Сплошная линия  но с точками на грани пера а не в его центре

           Толщина линии задаётся  в пикселях. Для сплошной и пустой линий она может быть любой. Для остальных стилей толщина должна быть равной только единице.

          Цвет задаётся макросом RGB( красный, зелёный, голубой). Каждый цвет задаётся числом от 0 до 255. Например, RGB(255,0,0) соответствует красному цвету.

Пример 1.

CPen    pen1;// Создан объект pen1

pen1.CreatePen(PS_DOT,5,RGB(0,0,0));// Перо будет рисовать пунктирную линию толщиной 5 пикселей чёрного цвета.

Такой способ рекомендуется в том случае, если одно и то же перо может менять стиль, толщину или цвет .

Пример 2 .  Используется конструктор:

CPen pen2(PS_DOT,5,RGB(0,0,0));

2.4.1.1 Использование пера

          Чтобы использовать перо, его нужно выбрать в контексте устройства, в котором выполняется рисование. Для этого служит метод класса CDC  SelectObject(). Её аргументом является адрес объекта «Перо». Она возвращает адрес ранее установленного пера. Этот адрес можно присвоить указателю на класс CPen и восстановить старое перо по завершению рисования. Ниже приведен типичный пример выбора пера.

CPenpen1;

pen1.CreatePen(PS_SOLID,1,RGB(0,0,0));

CPen*pOldPen=pDC->SelectObject(&pen1);// Выбрали перо pen1. Адрес //старого пера занесли в указатель pOldPen

pDC->MoveTo(100,50);// Переместили курсор в заданную точку (100,50)

pDC->LineTo(200,150);//Нарисовали линию из точки(100,50) в точку //(200,150)

…………………………………………………

pDC->SelectObject(pOldPen);//Восстановили старое перо.

Внимание! Чтобы стереть линию или фигуру, нужно повторно её отобразить цветом фона.

2.4.2 Объект «Кисть» (Brush)

          Представляет собой растровое изображение 8х8 пикселей. Его предназначение- закрашивание замкнутых областей. Различают две разновидности кисти: логическую и физическую. Объект GDI задаёт логическую кисть с набором свойств (стиль, цвет, форма). Возможно, не все эти свойства могут быть реализованы выбранным физическим устройством (физической кистью).

Различают четыре вида логических кистей, при создании которых используются различные методы.

·  Сплошная кисть одного цвета. Создаётся с помощью метода CreateSolidBrush().

·  Стандартные кисти. Используется метод CreateStockBrush().

·  Штриховые кисти характеризуются цветом и штриховкой. Используются методы CreateHatchBrush()  и  CreateSysColorBrush().

·  Шаблонные кисти могут иметь произвольную форму, заливаемую растровым изображением (BMP) либо аппаратно-независимым  растровым изображением (DIB). Используются методы CreatePatternBrush() и  CreateDibPatternBrush().

          Следует также помнить, что стандартные кисти  можно создавать с помощью конструкторов класса CBrush. Если параметры кисти с одним и тем же именем предполагается несколько раз изменять, удобно использовать конструктор с одним параметром- цветом. Но тогда следует использовать функцию  SelectObject() для выбора этой кисти.

Пример.

CBrushbrush1(RGB(255,0,0));

pDC->SelectObject(brush1);//Выбрана кисть brush1 со сплошной заливкой красного цвета.

          Имеется также конструктор с двумя параметрами: параметр закрашивания и цвет. Его применение оправдано, если кисть с данным идентификатором свои параметры не меняет. В общем виде определение и одновременно выбор кисти с помощью конструктора имеет вид:

CBrush  имя_кисти(стиль_штриховки, цвет);