Рисование геометрических фигур

Прямоугольник:

BOOL WINAPI Rectangle(HDC hdc, int nLeftRect, int nTopRect, int nRightRect, nBottomRect);

Эллипс:

BOOL WINAPI Ellips(HDC hdc, int nLeftRect, int nTopRect, int nRightRect, int nBottomRect);

Многоугольник:

BOOL Polygon(HDC hdc;// идентификатор контекстаconst POINT FAR* lppt;//адрес массива, содержащего координаты вершин int cPoints;//число точек

Закрашенный прямоугольник без окрашенной границы:

int FillRect(HDC hdc; const RECT FAR* lprc;//указатель на структуру RECT HBRUSH hbr;// дескриптор кисти)

Покраска границы прямоугольника:

int FrameRect(HDC hdc;const RECT FAR* lprc; HBRUSH hbr);

Области

В интерфейсе GDI есть средства, позволяющие приложениям создавать не отдельные геометрические фигуры, а области. Такие области можно закрашивать или использовать в качестве маски при выводе графического изображения. В последнем случае область называется областью ограничения. Она должна быть выбрана в контекст отображения.

Для создания прямоугольной области предназначены функции CreateRectRgn и CreateRectRgnIndirect:

HRGN WINAPI CreateRectRgn(4 координаты для задания прямоугольника);HRGN WINAPI CreateRectRgnIndirect(const RECT FAR* lprc);

Можно создать область в виде эллипса (элиипс вписан в заданный прямоугольник):

HRGN WINAPI CreateEllipticRgn(int nLeftRect, int nTopRect, int nRightRect, int nBottomRect);

Попадание в область

Функция BOOL WINAPI PtInRegion(HRGN hrgn, int nX, int nY) позволяет определить попадает ли точка с координатами (nX, nY) в область hrgn (при попадании функция возвращает TRUE).

HRGN hrgn;

BOOL in;

//определим текущую координату курсора(передается в lParam)

x=LOWORD(lParam);

y=HIWORD(lParam);

if(PtInRegion(hrgn,x,y)) {…}//курсор внутри области

else {…}//курсор вне области


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: