Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курс лекций ООП Visual C++.doc
Скачиваний:
13
Добавлен:
10.11.2019
Размер:
453.12 Кб
Скачать

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

CDC:: DrawFocusRect

Этот метод рисует прямоугольник в стиле, указанном прямоугольником, имеющим фокус.

void DrawFocusRect (

LPCRECT lpRect );

Параметры

lpRect - Указатель на структуру RECT или объект CRect, который определяет логические координаты прямоугольника, чтобы рисовать.

CDC:: Ellipse

Этот метод рисует эллипс.

BOOL Ellipse (

int x1 ,

int y1 ,

int x2 ,

int y2 );

BOOL Ellipse (

LPCRECT lpRect );

Параметры

x1 - Логическая x-координата левого верхнего угла ограничительного прямоугольника эллипса.

y1 - Логическая y-координата левого верхнего угла ограничительного прямоугольника эллипса.

x2 - Логическая x-координата нижнего правого угла ограничительного прямоугольника эллипса.

y2 - Логическая y-координата нижнего правого угла ограничительного прямоугольника эллипса.

lpRect - Ограничительный прямоугольник эллипса. Вы можете также передать объект CRect для этого параметра.

Возвращаемое значение - Отлично от нуля, если функция выполнена успешно; иначе - ноль.

Замечания

Центр эллипса - центр ограничительного прямоугольника, указанного x1, y1, x2, и y2, или lpRect. Эллипс рисуется текущим пером, и его внутренняя область заполнена текущей кистью.

Высота рисунка - y2 - y1, и ширина рисунка - x2 - x1.

Если или ширина или высота ограничительного прямоугольника являются нулевыми, никакой эллипс не рисуется.

CDC:: Polygon

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

BOOL Polygon (

LPPOINT lpPoints ,

int nCount );

Параметры

lpPoints - Указатель на массив точек, которые определяют вершины многоугольника. Каждая точка в массиве - структура POINT или объект CPoint.

nCount - Количество вершины в массиве.

Возвращаемое значение - Отлично от нуля, если функция выполнена успешно; иначе - ноль.

Пример

void CMyView:: OnDraw (CDC* pDC)

{

// Выделить клиентскую область.

CRect rect;

GetClientRect (rect);

// Рисовать сплошным синим пером.

CPen penBlue (PS_SOLID, 5, RGB (0, 0, 255));

CPen* pOldPen = pDC->SelectObject(&penBlue);

// Сплошная красная кисть.

CBrush brushRed (RGB (255, 0, 0));

CBrush* pOldBrush = pDC->SelectObject(&brushRed);

// Найти середины вершины, права, левого, и основания

// клиентской области. Они - вершина многоугольника.

CPoint запятые [4];

pts [0] .x = rect.left + rect. Width ()/2;

pts [0] .y = rect.top;

pts [1] .x = rect.right;

pts [1] .y = rect.top + rect. Height ()/2;

pts [2] .x = pts [0] .x;

pts [2] .y = rect.bottom;

pts [3] .x = rect.left;

pts [3] .y = pts [1] .y;

// Выбрать старые объекты.

pDC-> SelectObject (pOldPen);

pDC-> SelectObject (pOldBrush);

}

CDC:: PolyPolygon

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

BOOL PolyPolygon (

LPPOINT lpPoints ,

LPINT lpPolyCounts ,

int nCount );

Параметры

lpPoints - Указатель на массив структур POINT или объектов CPoint, которые определяют вершину многоугольников.

lpPolyCounts - Указатель на массив целых чисел, каждое из которых определяет количество точек в одном из многоугольников массива lpPoints.

nCount - Количество массивов в массиве lpPolyCounts. Это значение должно быть не менее двух.

Возвращаемое значение - Отлично от нуля, если функция выполнена успешно; иначе - ноль.

Замечания

Каждый многоугольник, указанный в запросе к функции PolyPolygon должен быть закрыт. В отличие от многоугольников, созданных методом Polygon, многоугольники, созданные PolyPolygon не закрыты автоматически.

Функция создает два или больше многоугольника. Чтобы создавать единственный многоугольник, нужно использовать метод Polygon.

CDC:: PolyLine

Этот метод рисует набор линий, соединяющих точки, указанные в lpPoints. Линии нарисованы от первой точки до последующих точек, используя текущее перо.

BOOL PolyLine (

LPPOINT lpPoints ,

int nCount );

Параметры

lpPoints - Указатель на массив структур POINT или объектов CPoint для соединения линий.

nCount - Количество точек в массиве. Это значение должно быть не менее двух.

Возвращаемое значение - Отлично от нуля, если функция выполнена успешно; иначе - ноль.

Замечания

В отличие от LineTo , метод PolyLine не использует и не модифицирует текущую позицию.

CDC:: Rectangle

Этот метод рисует прямоугольник, используя текущее перо. Внутренняя область прямоугольника заполнена, используя текущую кисть.

BOOL Rectangle(

int x1 ,

int y1 ,

int x2 ,

int y2 <>);

BOOL Rectangle(

LPCRECT lpRect );

Параметры

x1 - X-координата левого верхнего угла прямоугольника, в логических единицах.

y1 - Y-координата левого верхнего угла прямоугольника, в логических единицах.

x2 - X-координата нижнего правого угла прямоугольника, в логических единицах.

y2 - Y-координата нижнего правого угла прямоугольника, в логических единицах.

lpRect - Прямоугольник в логических единицах. Вы можете передать объект CRect или указатель на структуру RECT для этого параметра.

Возвращаемое значение - Отлично от нуля, если функция выполнена успешно; иначе - ноль.

Замечания

Высота прямоугольника - y2 - y1, и ширина прямоугольника - x2 - x1. И ширина и высота прямоугольника должны быть больше чем 2 логические единицы и меньше чем 32 767 логических единиц.

Пример

void CMyView:: OnDraw (CDC* pDC)

{

// Создать, и выбрать сплошную синюю кисть.

CBrush brushBlue (RGB (0, 0, 255));

CBrush* pOldBrush = pDC->SelectObject(&brushBlue);

// Создать, и выбрать сплошное, черное перо.

CPen penBlack;

penBlack. CreatePen (PS_SOLID, 3, RGB (0, 0, 0));

CPen* pOldPen = pDC->SelectObject(&penBlack);

// Получить клиентскую область.

CRect rect;

GetClientRect (rect);

// Сократить область на20 пикселов с каждой стороны.

rect. DeflateRect (20, 20);

// Рисовать сплошной черный прямоугольник, заполненный синим.

pDC-> Прямоугольник (rect);

// Выбрать старые объекты.

pDC-> SelectObject (pOldBrush);

pDC-> SelectObject (pOldPen);

}

CDC:: RoundRect

Этот метод рисует прямоугольник с округленными углами, используя текущее перо. Внутренняя область прямоугольника заполнена, используя текущую кисть.

BOOL RoundRect (

int x1 ,

int y1 ,

int x2 ,

int y2 ,

int x3 ,

int y3 );

BOOL RoundRect (

LPCRECT lpRect ,

POINT point );

Параметры

x1 - X-координата левого верхнего угла прямоугольника, в логических единицах.

y1 - Y-координата левого верхнего угла прямоугольника, в логических единицах.

x2 - X-координата нижнего правого угла прямоугольника, в логических единицах.

y2 - Y-координата нижнего правого угла прямоугольника, в логических единицах.

x3 - Ширина эллипса для рисования округленных углов, в логических единицах.

y3 - Высота эллипса для рисования округленных углов, в логических единицах.

lpRect - Ограничительный прямоугольник в логических модулях. Вы можете передать объект CRect или указатель на структуру RECT для этого параметра.

Point - Координата point определяет ширину эллипса, чтобы рисовать округленные углы, в логических единицах. Y-координата point определяет высоту эллипса, чтобы рисовать округленные углы. Вы можете передать структуру POINT или объект CPoint для этого параметра.

Возвращаемое значение - Отлично от нуля, если функция выполнена успешно; иначе - ноль.

Замечания

Высота прямоугольника - y2 - y1, и ширина прямоугольника - x2 - x1. И ширина и высота прямоугольника должны быть больше чем 2 логические единицы и меньше чем 32 767 логических единиц.

Пример

void CMyView:: OnDraw (CDC* pDC)

{

// Создать, и выбрать сплошную синюю кисть.

CBrush brushBlue (RGB (0, 0, 255));

CBrush* pOldBrush = pDC->SelectObject(&brushBlue);

// Создать, и выбрать сплошное черное перо.

CPen penBlack;

penBlack. CreatePen (PS_SOLID, 3, RGB (0, 0, 0));

CPen* pOldPen = pDC->SelectObject(&penBlack);

// Получить клиентскую область.

CRect rect;

GetClientRect (rect);

// Сократить область на 20 пикселов с каждой стороны.

rect. DeflateRect (20, 20);

// Рисовать толстый черный прямоугольник, заполненный синим

// углы округлились в радиусе 17 единиц.

pDC-> RoundRect (rect, CPoint (17, 17));

// Выбрать старые объекты.

pDC-> SelectObject (pOldBrush);

pDC-> SelectObject (pOldPen);

}

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