Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекций Часть II.doc
Скачиваний:
14
Добавлен:
20.11.2018
Размер:
1.48 Mб
Скачать

3.5.3. Функции рисования замкнутых фигур

Функции рисования замкнутых фигур строят закрашенные или неза­крашенные фигуры, такие, как прямоугольники, эллипсы, многоуголь­ники с прямыми и скругленными углами и т. д. Для закрашивания внут­ренней области замкнутых фигур используют кисть контекста отобра­жения. Внешний контур фигуры обводят пером контекста отображения. Учитывают и остальные атрибуты отображения. В зависимости от стиля пера граница фигуры может находиться полностью внутри заданного внешнего контура или выходить за его пределы. Если выбрать стиль пе­ра PS_NULL, контур станет невидимым.

Для рисования прямоугольника вызывают функцию Rectangle:

BOOL Rectangle( HDC hdc, int I, int t, int r, int b);

Параметры 1, t, r и b определяют логические координаты соответст­венно левого, верхнего, правого и нижнего краев прямоугольника. В случае успешного выполнения функция возвращает ненулевое значе­ние. Функция игнорирует текущую позицию.

Функция RoundRect рисует прямоугольник с закругленными углами:

BOOL RoundRect( HDC hdc, int I, int t, int r, int b, int w, int h);

Первые 5 параметров этой функции совпадают с параметрами функ­ции Rectangle. А параметры w и h задают соответственно ширину и вы­соту эллипса, дуги которого закругляют углы прямоугольника. В случае успешного выполнения функция возвращает ненулевое значение. Функ­ция игнорирует текущую позицию.

Функция FillRect закрашивает прямоугольную область окна заданной кистью:

int FillRect( HDC hdc, CONST RECT 1prc, HBRUSH hbr);

Параметр lprc указывает на закрашиваемый прямоугольник. Пара­метр hbr идентифицирует кисть закрашивания, может быть дескрипто­ром логической кисти или значением системного цвета. Например: FiilRect( hdc, &rect, (HBRUSH)(COLOR_WINDOW+1));

Правая и нижняя границы прямоугольника не закрашиваются. В слу­чае успешного выполнения функция возвращает ненулевое значение. Функция игнорирует текущую позицию.

Функция FrameRect рисует прямоугольную рамку:

int FrameRect( HDC hdc, CONST RECT *lprc, HBRUSH hbr);

Параметры этой функции подобны параметрам функции FillRect. Функция FrameRect кистью hbr рисует рамку вокруг заданного прямо­угольника. Ширина пера, используемого для рисования рамки, всегда равна одной логической единице. В случае успешного выполнения функция возвращает ненулевое значение. Функция игнорирует текущую позицию.

Функция InvertRect инвертирует значения цветов точек заданной прямоугольной области lprc:

BOOL InvertRect (HDC hdc, CONST RECT *lprc);

В случае успешного выполнения функция возвращает ненулевое зна­чение. Для восстановления цветов еще раз вызывают эту функцию.

Следующая функция пунктиром обозначает границы заданной пря­моугольной области lprc:

BOOL DrawFocusRect( HDC hdc, CONST RECT *lprc);

Пунктирные линии строятся с использованием растровой операции ИСКЛЮЧАЮЩЕЕ ИЛИ цветов точек, лежащих на границе прямо-

угольника. Вызывая эту функцию второй раз, можно удалить выделение прямоугольника. При прокрутке содержимого окна выделенная граница остается на месте. Для этой функции не нужно выбирать перо, рисующее пунктирную линию. Перед вызовом функции DrawFocusRect устанавли­вают режим отображения MM_TEXT.

Для рисования эллипса используют функцию Ellipse:

BOOL Ellipse( HDC hdc, int I, int t, int r, int b);

Параметры функции Ellipse идентичны первым пяти параметрам функции Arc. B случае успешного выполнения функция возвращает не­нулевое значение. Функция игнорирует текущую позицию.

Сегмент эллипса рисуют при помощи функцииСhord:

BOOL Chord(HDC hdc, int I, int t, int г, int b, int xO, int yO, int x, int у);

Параметры этой функции аналогичны параметрам функции Arc.

В отличие от функции Arc, функция Chord соединяет хордой точки начала и конца дуги эллипса и закрашивает выделенный таким образом сегмент текущей кистью. В случае успешного выполнения функция воз­вращает ненулевое значение. Функция игнорирует текущую позицию.

Для рисования сектора эллипса используют функцию Pie:

BOOL Pie(HDC hdc, int I, int t, int r, int b, int xO, int yO, int x, int у);

Параметры этой функции аналогичны параметрам функций Arc и Chord. В отличие от функции Chord, функция Pie соединяет точки начала и конца дуги с центром эллипса и закрашивает выделенный таким обра­зом сектор текущей кистью. В случае успешного выполнения функция возвращает ненулевое значение. Функция игнорирует текущую позицию.

Функция Polygon рисует многоугольник:

BOOL Polygon(HDC hdc, CONST POINT *lpPoints, int nCount);

Параметр lpPoints указывает на массив структур POWT, в котором нахо­дятся координаты вершин многоугольника. Параметр nCount равен размеру этого массива. В массиве каждая вершина должна быть указана только один раз. Функция Polygon автоматически соединяет первую и последнюю вер­шины многоугольника. В случае успешного выполнения функция возвраща­ет ненулевое значение. Функция игнорирует текущую позицию.