Азбука программирования в Win32 API


Азбука программирования в Win32 API - стр. 55


Как эллипс, так и окружность после прорисовки заполняются цветом и атрибутами текущей кисти.

UpX, UpY

EndX, EndY

StartX, StartY

~~LowX,LowY

Рис. 5. Определение аргумента функции FJlipscQ

63

Узнав, как рисуется эллипс, мы можем узнать, как рисуется прямо­угольник с закругленными углами.

Рисование прямоугольника с закругленными краями

Прямоугольник с закругленными краями рисуется с помощью функ­ции RoundRectQ. Из файла wingdi.h добываем ее описание WINGDIAPI BOOL WINAPI RoundRectfHDC, int, int, int, int. int. int);

Первые пять аргументов полностью идентичны аргументам функции Rect(). Последние два аргумента содержат ширину и высоту эллипса, определяющего дуги. После прорисовки прямоугольник закрашивается текущей кистью. В случае успешного завершения функция возвращает TRUE.

Рисование дуги и сектора эллипса

Возьмем из файла wingdi.h описание функции Агс(), которая исполь­зуется для рисования дуги:

WINGDIAPI BOOL WINAPI Arc(HDC, int, int, int, int, inl, int. int, int);

Первые пять аргументов полностью аналогичны аргументам функции EllipseQ. Непосредственно дуга определяется ещё двумя точками. Первая - начало дуги - находится на пересечении эллипса, частью которого является дуга, и прямой, проходящей через центр прямоугольника и точку начала дуги. На рис. 5 начало дуги обозначено StartX, StartY. Вторая - конец дуги - определяется аналогично. Конец дуги обозначен EndX, EndY. Таким образом, для прорисовки дуги необходимо сначала определить точки StartX, StartY и EndX, EndY, после чего прорисовывать дугу. Дуга прорисовывается против часовой стрелки.

У функции Pie(), которая применяется для рисования сектора эллипса, набор аргументов и их назначение абсолютно идентичны функции Агс().

Несколько слов о заполнении объектов

Как читатель уже знает, заполнение замкнутых графических объектов происходит с помощью текущей кисти. Программист может использовать предопределенную кисть, а может создать свою собственную, после чего сделать ее текущей с помощью функции SelectObject().




Начало  Назад  Вперед



Книжный магазин