
- •1. Сообщение wm_paint
- •2. Рисование графических примитивов
- •2.1. Создание кистей и перьев
- •2.2. Выбор объектов
- •2.3. Рисование прямоугольника
- •2.4. Рисование эллипса
- •2.5. Рисование линий
- •3. Обработка нажатий клавиш мыши
- •4. Обработка сообщений от клавиатуры
- •5.Порядок выполнения лабораторной работы
- •6. Контрольные вопросы
- •Приложение
2.4. Рисование эллипса
Функция рисования эллипса - Ellipse:
BOOL Ellipse(
HDC hdc, // дескриптор контекста устройства
int nLeftRect, // х - координата левого верхнего угла прямоугольника
int nTopRect, // y - координата левого верхнего угла прямоугольника
int nRightRect, // х - координата правого нижнего угла прямоугольника
int nBottomRect // y - координата правого нижнего угла прямоугольника
);
Функция рисует эллипс выбранными кистью и пером, возвращает ненулевой результат в случае успешного завершения и ноль в противном случае. Сумма координат прямоугольника не может превышать 32767. Координаты эллипса задаются прямоугольником, в который он вписан.
2.5. Рисование линий
Линии рисуются следующим образом: начало линии задается с помощью функции MoveToEx, которая задает текущую позицию, конец линии задается с помощью функции LineTo, которая рисует линию из текущей позиции до конечной, конечная позиция становится текущей.
Функция MoveToEx задает текущую позицию:
BOOL MoveToEx(
HDC hdc, // дескриптор контекста устройства
int X, // х координата новой позиции
int Y, // y координата новой позиции
LPPOINT lpPoint // указатель на предыдущую текущую позицию
);
Функция возвращает в параметре lpPoint адрес предыдущей текущей позиции.
Структура POINT:
typedef struct tagPOINT { // pt
LONG x; // х координата точки
LONG y; // у координата точки
} POINT;
В случае успешного завершения функция возвращает ненулевое значение, в противном случае ноль.
Функция LineTo:
BOOL LineTo(
HDC hdc, // дескриптор контекста устройства
int nXEnd, // x-координата конечной точки линии
int nYEnd // y- координата конечной точки линии
);
В случае успешного завершения функция возвращает ненулевое значение, в противном случае ноль.
Функции установки цвета текста и его цвета фона.
Функция SetTextColor устанавливает цвет текста.
COLORREF SetTextColor(
HDC hdc, // дескриптор контекста устройства
COLORREF crColor // цвет текста
);
Возвращаемое значение – предыдущий цвет текста, в случае успешного завершения и CR_INVALID в обратном случае.
Функция SetBkColor устанавливает цвет фона.
COLORREF SetBkColor(
HDC hdc, // дескриптор контекста устройства
COLORREF crColor // цвет фона
);
Возвращаемое значение – предыдущий цвет текста, в случае успешного завершения и CR_INVALID в обратном случае.
Функция TextOut выводит строку в заданную позицию.
BOOL TextOut(
HDC hdc, // дескриптор контекста устройства
int nXStart, // х - координата стартовой позиции
int nYStart, // y - координата стартовой позиции
LPCTSTR lpString, // указатель на строку
int cbString // количество символов в строке
);
hdc - идентифицирует контекст устройства
nXStart - определяет координату X для вывода строки
nYStart - определяет координату Y для вывода строки
lpString - укзывает на строку, которую надо отрисовать, строке не обязательно оканчиваться нулевым символом, cbString определяет длину строки
cbString - определяет количество символов в строке
В случае успешного завершения возвращает ненулевое значение, в противном случае ноль.