Nepravidelná okna ve VB, část 2 - Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



Visual Basic

Nepravidelná okna ve VB, část 2

27. července 2000, 00.00 | Pokračování seriálu o speciálních oknech ve windows. Tentokrát pokročilé metody návrhu..

V této části Vám ukáži, jak kombinovat různé regiony do jednoho složitějšího.

Kombinování regionů zajišťuje funkce CombineRgn

Public Declare Function CombineRgn Lib "gdi32" _
	( _
	ByVal hDestRgn As Long, _
	ByVal hSrcRgn1 As Long, _
	ByVal hSrcRgn2 As Long, _
	ByVal nCombineMode As Long _
	) As Long

Kde:     hDestRgn – výstupní region
            hSrcRgn1 – zdrojový region A
            hSrcRgn2 – zdrojový region B
            nCombineMode – mód pro kombinování regionů

Pozor: Před použitím této funkce musí již nějaký region hDestRgn existovat.

Módy pro kombinování:

RGN_AND - průnik dvou zdrojových regionů A a B (A * B)

RGN_COPY - vytvoří region určený zdrojovým regionem A (A)

RGN_DIFF – výsledný region je část zdrojového regionu A, která není částí zdr. regionu B (A – B)

RGN_OR – výsledný region je kombinací obou regionů A a B (A + B)

RGN_XOR – výsledný region je kombinací obou regionů A a B, mimo části, kterou se překrývají (A + B – A*B)

na obrázku najdete každý z těchto módů s příkladem:

Příklad k vytvoření základního tvaru kombinací dvou regionů:

'=============================

' vytvor jednoduche regiony
mRgn1=CreateRectRgn(10,10,200,200)
mRgn2=CreateEllipticRgn(50,50,250,250)
mRgnD=CreateRectRgn(0,0,1,1)

CombineRgn mRgnD, mRgn1, mRgn2, RGN_XOR

SetWindowRgn Me.hwnd, mRgnD, True

'==============================

Příklad na všechny druhy kombinací najdete zde. Jak složité regiony budete tvořit je již na Vás, možností spojování regionů kombinováním je nekonečně mnoho. Některé příklady najdete také na této stránce: http://vbasic.zde.cz v sekci Tips/Tricks – Regions

Další užitečné funkce pro práci s regiony:

OffsetRgn:

Public Declare Function OffsetRgn Lib "gdi32" Alias "OffsetRgn" _
	( _
	ByVal hRgn As Long, _
	ByVal x As Long, _
	ByVal y As Long _
	) As Long 

- funkce posune region hRgn o hodnoty X, Y

GetRgnBox:

Public Declare Function GetRgnBox Lib "gdi32" Alias "GetRgnBox" _
	( _
	ByVal hRgn As Long, _
	lpRect As RECT _
	) As Long

- uloží do hodnoty lpRECT (typu RECT) krajni body [X1,Y1] a [X2,Y2] meznich hranic jakehokoliv regionu regionu.

PtInRegion:

Public Declare Function PtInRegion Lib "gdi32" Alias "PtInRegion" (ByVal hRgn As Long, ByVal x As Long, ByVal y As Long) As Long - zjistí zda-li bod [X,Y] je uvnitř regionu. Vrací True/False

RectInRgn:

Public Declare Function RectInRegion Lib "gdi32" Alias "RectInRegion" _
	( _
	ByVal hRgn As Long, _
	lpRect As RECT _
	) As Long

- zajistí zda obdélník lpRect (typu RECT) je všemi svými body uvnitř regionu.

EqualRgn:

Public Declare Function EqualRgn Lib "gdi32" Alias "EqualRgn" _
	( _
	ByVal hSrcRgn1 As Long, _
	ByVal hSrcRgn2 As Long _
	) As Long 

- porovnává dva regiony. Pokud jsou naprosto identické vrací True

V příští, poslední, části tohoto návodu na tvorbu nepravidelných oken se dozvíte, jak vytvářet region z písma (fontu), o tvorbě regionu z vybrané barvy na bitmapě, či jak udělat animované okno…

Obsah seriálu (více o seriálu):

Tématické zařazení:

 » Rubriky  » Visual Basic  

 » Rubriky  » Windows  

 

 

 

Nejčtenější články
Nejlépe hodnocené články

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: