- •Структура программы.
- •Создание простейшего приложения Windows.
- •Работа с пером.
- •Работа с кистью.
- •Работа со шрифтами.
- •Работа с клавиатурой.
- •Работа с мышью.
- •Редактирование меню.
- •Кнопки на панели инструментов.
- •Блокировка и пометка пунктов меню.
- •Диалоговые окна.
- •Флажки и переключатели.
- •Списки.
- •Методы выбора.
- •Методы параметров рисунка.
- •Методы цветовой палитры.
- •Методы атрибутов рисунка.
- •Растровые методы.
- •Методы отсечения.
- •Методы рисования линии.
- •Методы простых рисунков.
- •Методы рисования эллипса и многоугольника.
- •Текстовые методы.
Методы рисования эллипса и многоугольника.
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);
}