Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Создание и заполнение произвольных областей С помощью комбинации простейших геометрических фигур-многоугольников, прямоугольников и эллипсов программа может создать сложную геометрическую фигуру, которая называется областью (регион-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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!