Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
38
Добавлен:
16.02.2016
Размер:
589.31 Кб
Скачать

CPen - hpen, cBrush -hbrush, cFont - hfont, cBitmap- hbitmap, cPalette- hpalette, cRgn - hrgn.

Каждый класс объекта графического интерфейса имеет конструктор, выполняющий создание объекта. Затем объект инициализируется соответствующей функцией, для пера - CreatePen.

Как правило, для того чтобы выполнить какую-либо операцию рисования, необходимо выполнить следующие действия:

1. Объявление объекта графического интерфейса (объявление переменной класса графического интерфейса) и инициализация его функцией создания объекта. Одновременно существует возможность инициализации объекта и в конструкторе класса;

2. Связывание созданного объекта графического интерфейса с контекстом устройства. Это действие выполняется функцией SelectObject, возвращающей значение предыдущего объекта графического интерфейса;

3. Выполнение операций рисования доступных для данного контекста устройств.

После завершения операций рисования можно вернуть предыдущее значение объекта графического интерфейса. Пример:

// Создание и использование пера void CMyView::6nDraw( CDC* pDC ) // Переопределение метода { // 1. Вызов конструктора с одновременной инициализацией CPen myPenl( PS_DOT, 5, RGB(0,0,0));

// 2. Вызов конструктора, а затем инициализация

CPen myPen2; if( myPen2.CreatePen( PS DOT, 5, RGB(0,0,0))) {} // 3. Связывание пера с контекстом устройства

CPen penRed; if( newPen.CreatePen( PS SOLID, 2, RGB(225,0,0)) ) { CPen* pOldPen = pDC->SelectObject( &penRed ); // Связывание

// 4. Операции рисования в контексте устройства

pDC->MoveTo(...); // Изменение текущей позиции pDC->LineTo(...); // Проведение созданным пером линии

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

} }

Объект графического интерфейса, возвращаемый методом SelectObject, является временным объектом. Это означает, что он будет удаляться методом Onldle класса CWinApp всякий раз, когда программа вызывает этот метод.

Класс CPen

Класс CPen инкапсулирует функционирование такого объекта графического интерфейса Windows, как перо. Перо служит для рисования линий. Оно имеет такие атрибуты, как цвет, ширина, тип линии.

Методы класса CPen СРеп();

CPen( int nPenStyle, int nWidth, COLORREF crColor );

Throw( cResourceException );

CPen( int nPenStyle, int nWidth, const LOGBRUSH* pLogBrush, int

nStyleCount = 0, const DWORD* ipStyle = NULL );

throw( CResourceException );

Конструкторы класса.

Параметры:

nPenStyle - стиль пера. Приведем неполный список значений стиля пера: PS_SOLID (сплошная линия);

PS_DASH (пунктирная линия только для ширины пера, равной 1); PS_DOT (точечная линия: только для ширины пера, равной 1); PS_DASHDOT (линия точка-тире: только для ширины пера, равной 1); PS_DASHDOTDOT (линия точка-точка-тире: только для ширины пера,

равной 1);

PS_NULL (линия отсутствует); PS_ENDCAP_ROUND (закругленный конец линии); PS_ENDCAP_SQUARE (квадратный конец линии); PS_ENDCAP_FLAT (ровный конец линии).

n Width - ширина пера. Если этот параметр для второго конструктора равен 0, то ширина принимается равной 1 пикселю независимо от используемого типа логической системы координат. Для третьего конструктора ширина определяется в зависимости от значения nPenStyle: для PS_GEOMETRIC ширина берется в логических единицах, а для PS_COSMETIC ширина всегда равна 1.

crColor - RGB-цвет пера.

pLogBrush - указатель на структуру LOGBRUSH.

BOOL CreatePen( int nPenStyle, int nWidth, COLORREF crColor );

BOOL CreatePen( int nPenStyle, int n Width, const LOGBRUSH* pLogBrush,

int nStyleCount = 0, const DWORD* ipStyle = NULL );

Эти методы используются для инициализации созданного пера. При успешном завершении метод возвращает ненулевое значение.

Класс CBrush

Класс CBrush инкапсулирует функционирование такого объекта графического интерфейса Windows, как кисть. Кисть служит для заполнения замкнутых областей. Она имеет такие атрибуты, как цвет и стиль.

Методы класса CBrush

CBrush();

CBrush( COLORREF crColor ); throw( CResourceException );

CBrush( int nlndex, COLORREF crColor ); throw( CResourceException );

CBrush( CBitmap* pBitmap ); throw( CResourceException );

Конструктор класса. При использовании первого варианта конструктора кисть должна быть проинициализирована вызовом одного из методов с префиксом Create. Последние три конструктора выполняют за один шаг создание объекта и его инициализацию.

Параметры:

crColor - RGB-цвет кисти. Если цвет пера определяет цвет переднего плана, то цвет кисти всегда определяет фоновый цвет. Для штрихующей кисти этот параметр определяет цвет штриховки.

nlndex - стиль штриховки для штрихующей кисти: HS_BDIAGONAL (слева направо по углом 45); HS_CROSS (перекрестная штриховка); HS_DIAGCROSS; HS_FDIAGONAL; HS_HORIZONTAL; HS_VERTICAL.

pBitmap - указатель на объект CBitmap, определяющий изображение, рисуемое шаблонной кистью. Размер растрового изображения используемого для кисти, должен быть 8x8 пикселей. BOOL CreateSolidBrush( COLORREF crColor);

Метод инициализирует сплошную кисть. BOOL CreateHatchBrush( int nlndex, COLORREF crColor );

Метод инициализирует штрихующую кисть. BOOL CreateBrushIndirect( const LOGBRUSH* ipLogBrush );

Метод инициализирует кисть значениями для стиля, цвета и штриховки, указанными в структуре LOGBRUSH.

Эта структура объявлена следующим образом: ,

typedef struct tagLOGBRUSH { UINT lbStyle; COLORREF IbColor; LONG lbHatch; }LOGBRUSH;

BOOL CreatePatternBrush( CBitmap* pBitmap );

Метод инициализирует шаблонную кисть.

Растровое изображение, указываемое параметром pBitmap, предварительно должно быть инициализировано одним из следующих методов: CBitmap::CreateBitmap, CBitmapr.CreateBitmapIndirect, CBitmap:: LoadBitmap или CBitmap::CreateCompatibleBitmap.

При успешном завершении метод возвращает ненулевое значение.

BOOL CreateDIBPatternBrush( HGLOBAL hPackedDIB, UINT nUsage ); BOOL CreateDIBPatternBrush( const void* lpPackedDIB, UINT nUsage );

Метод инициализирует шаблонную кисть, использующую аппаратно независимое растровое изображение. BOOL CreateSysColorBrush( int nlndex);

Метод инициализирует штрихующую кисть.

После того как приложение завершит использование данной кисти, ее следует отсоединить от контекста устройства.

Класс CRgn

Класс CRgn инкапсулирует функционирование такого объекта графического интерфейса Windows, как область. Областью, или регионом, называется ограниченное некоторой геометрической фигурой (эллипсом, прямоугольником) или их комбинацией пространство внутри окна.

Методы класса CRgn позволяют создавать, изменять и получать информацию об областях. Методы класса CDC применяются для использования областей.

Для работы с областью первоначально следует создать объект, а затем проинициализировать его одним из методов, начинающихся с префикса Create.

Методы класса CRgn

CRgn();

Конструктор объекта CRgn. BOOL CreateRectRgn( int xl, int yl, int x2, int y2);

Метод выполняет инициализацию области: создает прямоугольную область, хранимую в объекте CRgn. Размер области ограничен 32767 на 32767 логическими единицами или 64 К памяти.

При успешном завершении метод возвращает ненулевое значение.

Для удаления области из контекста устройства следует использовать метод CGDIObject::DeleteObject.

BOOL CreateRectRgnIndirect( LPCRECT lpRect);

Метод создает прямоугольную область, хранимую в объекте CRgn.

Для удаления области из контекста устройства следует использовать метод CGDIObject::DeleteObject.

BOOL CreateEIlipticRgn( int xl, int yl, int x2, int y2); BOOL CreateEUipticRgnIndirect( LPCRECT IpRect);

Эти методы создают область, имеющую форму эллипса, и хранят ее в объекте CRgn.

BOOL CreatePolygonRgn( LPPOINT ipPoints, int nCount, int nMode );

Метод создает объект многоугольник CRgn. Если координаты последней точки многоугольника не совпадают с координатами первой точки, то область замыкается автоматически. Размер области ограничен 32767 на 32767 логическими единицами или 64 К памяти. Параметр nMode определяет режим закрашивания области: ALTERNATE или WINDING.

При успешном завершении метод возвращает ненулевое значение.

Для удаления области из контекста устройства следует использовать метод CGDIObject::DeleteObjcct.

BOOL CreatePolyPolygonRgn( LPPOINT IpPoints, LPINT ipPolyCounts, int nCount, int nPolyFillMode );

Метод создает область, состоящую из набора замкнутых многоугольников. BOOL CreateRoundRectRgn( int xl, int yl, int x2, int у2, int x3, int y3 );

Метод создает в CRgn прямоугольную область со скругленными углами.

Соседние файлы в папке VC++Баженова