
- •Теоретичні основи Основні поняття
- •Поняття графічний контекст
- •Визначення dc для об’єктів типу вікно
- •Поняття растру та основні функції роботи з ним.
- •Мал. 3. Приклад малювання ламаної фігури Окрім прямої і точки є функції для малювання готових фігур, як коло(еліпс) прямокутник(квадрат).
- •Створення інструментів.
- •Створення пера
- •Створення щитки
- •Створення об’єкта шрифт
- •Створення регіональних контурів
- •Створення об’єкту типу bitmap (полотно)
Створення регіональних контурів
Під регіональним контуром розуміється об‘єкт, що описує певну область як сукупність точок або підмножин областей. Іншими словами регіон описує контур (область) видимості (малювання). Цей інструмент є дуже потрібний для будування специфічних об’єктів. Нижче наведений список функцій роботи з регіонами.
Функція |
Опис |
CombineRgn |
Комбінує 2 регіони (перетин, вирізання, об‘єднання ітд ) |
CreateEllipticRgn |
Ств. регіон у вигляді еліпса |
CreateEllipticRgnIndirect |
Ств. Регіон у вигляді еліпса (за допомогою структури RECT) |
CreatePolygonRgn |
Ств. регіон з полігону точок |
CreatePolyPolygonRgn |
Ств. регіон з полігонних областей точок |
CreateRectRgn |
Ств. регіон прямокутник |
CreateRectRgnIndirect |
Ств. регіон прямокутник з структури RECT |
CreateRoundRectRgn |
Ств. регіон прямокутник з не гострими кутами |
EqualRgn |
Перевіряє 2 регіони на ідентичність. |
ExtCreateRegion |
Ств. регіон на основі спеціальних МЕТА-даних. |
FillRgn |
Зафарбовує регіон певним кольором. |
FrameRgn |
Малює границю доокола регіону |
GetPolyFillMode |
Визначає поточний тип заповнення/замальовування регіону |
GetRegionData |
Повертає масив точок, які описують регіональну область |
GetRgnBox |
Повертає фізичні параметри і записує у структуру RECT |
InvertRgn |
Інвертує колів в певній області |
OffsetRgn |
Переміщує регіон на певне зміщення |
PaintRgn |
Малює регіон на певному DC. |
PtInRegion |
Визначає чи входить точка (X,Y) в задану область регіону |
RectInRegion |
Визначає чи "влазить" прямокутник у область регіону |
SetPolyFillMode |
Встановлює стиль заповнення регіону |
SetRectRgn |
Конвертує регіон у прямокутник не чіткою портую (не гострими кутами)
|
Приклад.1
.data
x POINT <150,150>
POINT <250,100>
POINT <100,100>
.code
…….
DlgProc proc hWin:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM
LOCAL hr:DWORD
mov eax,uMsg
.if eax==WM_INITDIALOG
invoke GetDC,hWin
mov hdc1,eax
.elseif eax==WM_COMMAND
.if wParam == 1001
invoke CreatePolygonRgn,addr x,3,WINDING ; ств. регіон
mov hr,eax
invoke CreateSolidBrush,00A8A8FFh ; ств. щітку
push eax
invoke FillRgn,hdc1,hr,eax ; замалювали регіон
call DeleteObject ; витерли щітку (хендл вже у стеку)
invoke DeleteObject,hr ; знищуємо регіон
.endif
.elseif eax==WM_CLOSE
invoke ReleaseDC,hWin,hdc1
invoke EndDialog,hWin,0
.else
mov eax,FALSE
ret
.endif
mov eax,TRUE
ret
DlgProc endp
……
Приклад 2
.data
x POINT <0,0>
POINT <550,500>
POINT <500,100>
y POINT <0,500>
POINT <250,0>
POINT <500,200>
.code
.elseif eax==WM_COMMAND
.if wParam == 1001
invoke CreatePolygonRgn,addr x,3,1
mov hr1,eax
invoke CreatePolygonRgn,addr y,3,1
mov hr2,eax
invoke CombineRgn,hr1,hr1,hr2,RGN_OR
invoke SetWindowRgn,hWin,hr1,1
.endif
Зафарбовування регіональної області створення форми з "специфічним виглядом"
Мал. 5 регіони