Прямоугольник:
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);Можно создать область в виде эллипса (элиипс вписан в заданный прямоугольник):
|
|
Попадание в область
Функция 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 {…}//курсор вне области