Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Создание и заполнение произвольных областей. Пример



Создание и заполнение произвольных областей С помощью комбинации простейших геометрических фигур-многоугольников, прямоугольников и эллипсов программа может создать сложную геометрическую фигуру, которая называется областью (регион-Region). Область-это такой же графический объект, как перо или кисть. Последовательность работы с областью заключается в следующем.

•Сначала создается область.

•Затем выбирается кисть и ею заполняется область.• И, наконец, ненужные области удаляются подобно логическим инструментам с помощью функции DeleteObject. При работе с областями используются следующие API-функции.

♦CombineRgn(ByValhDestRgnAsLong, ByValhSrcRgn1 AsLong, ByValhSrcRgn2 AsLong, ByValnCombineModeAsLong) –объединяет области hSrcRgn1, hSrcRgn2 и помещает результат в уже существующую область hDestRgn. АргументnCombineMode задает режим объединения, который может принимать одно из следующих значений:

RGN_AND –объединенная область содержит части, общие для обеих областей;

RGN_OR –объединенная область содержит обе области hSrcRgn1,hSrcRgn2;

RGN_XOR –объединенная область содержит только те части hSrcRgn1, hSrcRgn2, которые не являются общими для обеих областей;

RGN_COPY – объединенная область содержит лишь область hSrcRgn1, а область hSrcRgn2 игнорируется; RGN_DIFF -в объединенную область помещается лишь та часть hSrcRgn1, которая не принадлежит области hSrcRgn2 (RGN_DIFF= hSrcRgn1 -hSrcRgn2). Размер объединенной области, как и вообще любой области, не может превышать 64 Кбайт. Для повышения эффективности работы функции желательно, чтобыRgn1 была областью простой формы(прямоугольник или эллипс).

♦CreateEllipticRgn(ByValx1 AsLong, ByValy1 AsLong, ByValx2 AsLong, ByValy2 AsLong) – создает

Область в виде эллипса(или окружности), вписанного в прямоугольник x1,y1,x2,y2.

*CreateRectRgn(ByValx1 AsLong, ByValy1 AsLong, ByValx2 AsLong, ByValy2 AsLong) –создает прямоугольную область.

*CreateRoundRectRgn(ByValx1 AsLong, ByValy1 AsLong, ByValx2 AsLong, ByValy2 AsLong, ByValx3 AsLong, ByValy3 AsLong) –создает прямоугольную область с закругленными углами.

*CreatePolygonRgn(lpPointAsPOINTAPI,ByValnCountAsLong, ByValnPolyFillModeAsLong) – создает регион в виде многоугольника. *EqualRgn(ByValhSrcRgn1 AsLong, ByValhSrcRgn2 AsLong) —проверяет эквивалентность двух областей.

FillRgn(ByValhdcAsLong, ByValhRgnAsLong, ByValhBrushAsLong) —заполняет(но не обводит) область кистью.

♦FrameRgn(ByValhdcAsLong, ByValhRgnAsLong, ByValhBrushAsLong, ByValnWidthAsLong, ByVal nHeightAsLong) —обводит(не заполняет) область кистью.

nWidht, nHeigth-ширина и высота кисти. По умолчанию цвет кисти берется из BackColor.

♦InvertRgn(ByValhdcAsLong, ByValhRgnAsLong)—инвертирует цвет пиксель внутри области hRgn.

OffsetRgn(ByValhRgnAsLong, ByValx AsLong, ByValy AsLong) –смещает видимое изображение на x,y логических единиц по горизонтали и вертикали. Положительные значения соответствуют наращиванию координат.

PaintRgn(ByVal hdcAsLong, ByValhRgnAsLong) –заполняет область целиком текущей кистью.

SetWindowRgn(ByVal hWndAsLong, ByValhRgnAsLong, ByValbRedrawAsBoolean) –прикрепляет регион к окну.





Дата публикования: 2014-12-28; Прочитано: 284 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...