Рисование точки

Рисование точек

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 используются редко, так как для построения графических изображений есть более мощные функции.