Рисование точки
Рисование точек
HGDIOBJ SelectObject (
Уничтожить объект.
Удалить объект из контекста устройства, вернув предшествующий объект;
Вызвать графическую функцию, работающую с объектом;
Выбрать созданный объект в контекст устройства;
Создать графический объект;
Для создания GDI-объектов предназначены соответствующие функции Create…, которые в случае успешного завершения возвращают дескриптор объекта.
Выбор объекта в контекст устройства осуществляется при помощи функции SelectObject (палитры выбираются с помощью функции SelectPalette). Функция SelectObject имеет следующий прототип:
HDC hdc, – дескриптор контекста устройства
HGDIOBJ hgdiobj – дескриптор GDI-объекта
);
Для корректной работы приложение должно запомнить предшествующий дескриптор и после окончания рисования с новым объектом (шаг 3) вернуть в контекст устройства предшествующий объект (шаг 4).
Для уничтожения объекта вызывается функция DeleteObject.
Перед рисованием линий необходимо настроить контекст устройства в соответствии с выполняемой операцией, установив нужные значения атрибутов. Назначение атрибутов контекста устройства следующее:
· Текущее перо (Pen). Определяет вид проводимой линии — толщину, цвет, стиль.
· Текущая позиция пера (Pen Position).
· Цвет фона (Background Color).
· Режим заполнения фона (Background Mode).
· Режим рисования (Drawing Mode).
· Направление рисования дуг эллипсов (Arc Direction).
По умолчанию текущая позиция пера установлена в точку (0,0).
Для изменения текущей позиции пера можно воспользоваться функцией:
BOOL MoveToEx( HDC hDC, – дескриптор контекста устройства
int nX, – x координата новой текщей позиции
int nY, – у координата новой текущей позиции
LPPOINT lpPoint – предыдущая позиция пера
);
Функция MoveToEx перемещает текущую точку пера в указанное место, не выполняя рисования.
Для того, чтобы получить значение текущей позиции пера необходимо вызвать функцию:
GetCurrentPositionEx(HDC hDC, POINT &pt).
Результат выполнения функции помещается в переменную pt.
Функция рисования точки SetPixel устанавливает цвет точки с заданными координатами:
COLORREF WINAPI SetPixel( HDC hdc, // контекст отображения int nXPos, // x-координата точки int nYPos, // y-координата точки COLORREF clrref); // цвет точки
Параметр hdc определяет контекст отображения, для которого необходимо изменить цвет точки;
Параметры nXPos и nYPos определяют координаты точки в системе координат, которая зависит от установленного для контекста hdc режима отображения.
Последний параметр clrref определяет новый цвет точки.
Задать цвет точки можно с помощью макрокоманды RGB, позволяющей сконструировать цвет в формате COLORREF из отдельных компонент красного (r), зеленого (g) и голубого (b) цвета:
#define RGB(r,g,b)
Например, для установки красного цвета точки, расположенной в начале системы координат (0,0) можно использовать запись:
SetPixel(hdc, 0, 0, RGB(0xff, 0, 0));
Функция SetPixel возвращает цвет, который был использован для рисования точки. Возвращаемое значение может отличаться от заданного параметром clrref. В случае ошибки оно будет равно -1.
Функция GetPixel позволяет узнать цвет точки, заданной идентификатором контекста отображения и координатами:
COLORREF WINAPI GetPixel(HDC hdc, int nXPos, int nYPos);Функции SetPixel и GetPixel используются редко, так как для построения графических изображений есть более мощные функции.