Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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




EndWith

Pen= CreatePenIndirect (mLP)OldPen= SelectObject (Form1.hdc, Pen)Ifi = 1 ThenCallRectangle(Form1.hdc,20,30,70,80)Ifi = 2 ThenCall Ellipse (Form1.hdc,100,30,150,80)Ifi = 3 ThenCall_ Pie (Form1.hdc,180,30,230,80,180,30,230,30)Ifi = 4 ThenCall_ Chord (Form1.hdc, 260, 30, 310, 80,260,30,310,50)Ifi = 5 ThenCall_ RoundRect (Form1.hdc,20,120,70,170,25,25)if i = 6 ThenCall SelectObject (Form1.hdc, OldPen)W.x= 3mLP.lopnWidth= WPen= CreatePenIndirect (mLP)

OldPen= SelectObject (Form1.hdc, Pen)Call Arc (Form1.hdc,200,100,320,200,350,250, 200,400)Call MoveToEx (Form1.hdc, 400, 250, lpp)Call LineTo (Form1.hdc, 260, 150)Call LineTo (Form1.hdc, 190, 250)Call FloodFill (Form1.hdc, 250, 120, &HFF)EndIfCall SelectObject (Form1.hdc, OldPen)NextCall SelectObject (Form1.hdc, OldBrush) EndSubPrivateSubForm_Load() Caption= "Примеротображенияграфическихпримитивов" End Sub


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


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.