Контекст устройства. Работа с текстом. Диалоговое окно выбора цвета. Настройка режима отображения. Точечный рисунок. Класс CBitmap, страница 7

x1 , y1 , x2 , y2     координаты двух противоположных вершин прямоугольника, в который вписан эллипс.

x3 , y3                  координаты конечной точки начального радиус-вектора.

x4 , y4                  координаты конечной точки конечного радиус-вектора.

lpRect                  указатель на структуру RECT, которая определяет размеры и положение прямоугольника, в который вписан эллипс.

ptStart                 указатель на конечную точку начального радиус-вектора.

ptEnd                   указатель на конечную точку конечного радиус-вектора.

Вместо структуры POINT допускается также использование объектов типа CPoint.

Рисование эллиптической дуги и хорды. Функция Chord

Назначение: рисует замкнутую линию, состоящей из эллиптической дуги между двумя заданными радиус-векторами и соответствующей хорды. Радиус-вектор начинается в центре рабочего прямоугольника и заканчивается в указанной точке, которая не обязана лежать на дуге. Дуга рисуется в направлении против часовой стрелки. Нарисованная фигура заполняется текущей кистью.

Синтаксис:

BOOL Chord (  int x1 , int y1 , int x2 , int y2 , int x3 , int y3 , int x4 , int y4 ) ;

BOOL Chord ( LPCRECT lpRect , POINT ptStart , POINT ptEnd ) ;

Параметры: те же, что и у функции Arc.

Рисование ломаной линии. Функция Polyline

Назначение: рисует набор отрезков, соединяющих указанные точки. В отличие от функции LineTo, функция Polyline не использует и не обновляет текущую координату.

Синтаксис:

BOOL Polyline ( LPPOINT lpPoints , int nCount ) ;

Параметры:

lpPoints                указатель на массив структур POINT, которые определяют соединяемые точки.

nCount                 определяет количество точек в массиве (не менее 2)

Пример: В приведённом ниже примере создаётся массив точек, определяющих крест. Массив содержит 7 точек – 4 вершины и центр креста, который используется трижды. Крест рисуется с помощью ломаной линии с центром в точке x, y.

         CClientDC dc ( this ) ;            // контекст устройства – текущее диалоговое окно

         const n = 7 ;                            // количество точек в массиве

         int x = 200 , y = 100 ;               // координаты центра креста

         int h = 10 ;                              // длина луча

                                                         // объявление и инициализация массива вершин креста

         POINT ptD [ n ] = {{ x-h , y } , { x , y } , { x , y-h } , { x , y } , { x+h , y } , { x ,y } , { x , y+h }} ;

         dc.Polyline ( ptD , n );             // рисование креста

Рисование многоугольника. Функция Polygon

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

Синтаксис:

BOOL Polygon( LPPOINT lpPoints , int nCount ) ;

Параметры: те же, что и у функции Polyline .

Текущий способ заполнения многоугольника может быть получен и задан с помощью функций GetPolyFillMode и SetPolyFillMode.

карандаш. Класс CPen


Класс СРеn инкапсулирует графический объект Windows – “карандаш”. Карандаши используются для рисования различных линий и контуров объектов. Иерархия классов относительно класса СРеn представлена на рисунке.

Конструкторы класса СРеn

В классе СРеn определены три конструктора, прототипы которых приведены ниже. Первый конструктор позволяет создавать объекты, не связанные с объектами Windows.

CPen ();

Второй конструктор предназначен для создания объектов класса с одновременным созданием карандашей Windows.

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

Параметры:

nPenStyle             определяет стиль пера. Этот параметр может принимать одно из следующих значений:

PS_SOLID                                   сплошная линия.

PS_NULL                          прозрачная линия.

PS_INSIDEFRAME           сплошная линия для рисования по внутренней границе замкнутой области

PS_DASH                                    длинные штрихи.

PS_DOT                                       короткие штрихи.

PS_DASHDOT                             штрих-пунктир.

PS_DASHDOTDOTштрих-пунктир-пунктир.