Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Osnovy_algoritmizatsii_i_programmirovania_-_Bat....doc
Скачиваний:
52
Добавлен:
25.12.2018
Размер:
3.21 Mб
Скачать

6.10. Рисование замкнутых фигур

Рассмотрим функции для рисования замкнутых фигур:

Rectangle – прямоугольник; Ellipse – эллипс; RoundRect – прямоугольник со скругленными углами; Chord – дуга кривой эллипса, концы которой соединены хордой; Pie – кусок, вырезанный из эллипса; Polygon – многоугольник; PolyPolygon – множество многоугольников.

Контур фигуры рисуется текущим пером, а фигура закрашивается текущей кистью. По умолчанию это стандартная кисть WHITE_BRUSH.

Простейшей является функция рисования прямоугольника:

Rectangle (hdc, x1, y1, x2, y2);

(x1, y1) – координаты левого верхнего угла, (x2, y2) – правого нижнего угла.

Для рисования эллипса используется функция, имеющая те же параметры:

Ellipse (hdc, x1, y1, x2, y2);

Фигура, отображаемая функцией Ellipse (вместе с ограничивающим прямоугольником).

Функция для рисования прямоугольника со скругленными углами:

RoundRect (hdc, x1, y1, x2, y2, xEllipse, yEllipse);

имеет два дополнительных параметра: для рисования скругленных углов используется маленький эллипс, шириной xEllipse, высотой yEllipse. Фигура, отображаемая этой функцией, приведена на рисунке. Скругленные углы были нарисованы с использованием размеров эллипса, вычисленных по формулам

xEllipse = (x2–x1)/4; yEllipse = (y2–y1)/4;

Это простое приближение, но результаты скорее всего будут выглядеть не совсем правильно, потому что округлость углов более заметна при больших размерах прямоугольника.

Функции Chord (сегмент эллипса) и Pie (сектор эллипса) имеют одинаковые параметры:

Chord (hdc, x1, y1, x2, y2, xStart, yStart, xEnd, yEnd);

Pie (hdc, x1, y1, x2, y2, xStart, yStart, xEnd, yEnd);

При рисовании используется воображаемая линия для соединения точки (xStart, yStart – начало дуги) с центром эллипса. В точке, где эта линия пересекается с ограничивающим прямоугольником, начинается рисование дуги эллипса в направлении против часовой стрелки; аналогично используется воображаемая линия для соединения точки (xEnd, yEnd – конец дуги) с центром эллипса. В точке, где эта линия пересекается с ограничивающим прямоугольником, завершается рисование дуги.

В функции Chord соединяются конечные точки дуги, а в функции Pie соединяются начальная и конечная точки дуги с центром эллипса.

Фигуры, отображаемые функциями Chord и Pie, приведены на рис. П 6.3.

Рис. П 6.3. Фигуры, нарисованные с использованием:

а – функции Chord; б – функции Pie

6.11. Функция Polygon и режим закрашивания многоугольника

Функция рисования многоугольника:

Polygon (hdc, pt, iCount);

pt – это массив структур типа POINT, iCount – число точек; если последняя точка в массиве не совпадает с первой, то добавляется линия, их соединяющая.

Внутренняя область фигуры закрашивается текущей кистью. По умолчанию режим закрашивания равен ALTERNATE (попеременный), т.е. закрашиваются только те фрагменты внутренней области многоугольника, которые получаются путем соединения линий с нечетными номерами (1, 3, 5...), другие фрагменты внутренней области не закрашиваются.

Режим закрашивания устанавливается функцией:

SetPolyFillMode (hdc, iMode);

iMode – режим закрашивания, WINDING (сквозной) – закрашиваются все внутренние области. Для иллюстрации приведем пример:

звезда, находящаяся слева, нарисована в режиме ALTERNATE, а звезда, находящаяся справа – в режиме WINDING.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]