Nepravidlená okna ve VB, část I - 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

Nepravidlená okna ve VB, část I

14. července 2000, 00.00 | V mnohých aplikacích se setkáváte s okny, která už nejsou jenom
obdélníková, eliptická, ale i ve tvaru mnohoúhelníku, vykřičníků, obličejů a
mnoha dalších různých tvarů. Jak je vytvořit?

V mnohých aplikacích se setkáváte s okny, která už nejsou jenom obdélníková, eliptická, ale i ve tvaru mnohoúhelníku, vykřičníků, obličejů a mnoha dalších různých tvarů. Techniku tvorby takovýchto oken se Vám pokusím přiblížit v tomto článku.

Vše se odehrává kolem regionů. Region je útvar, který definován hranicemi. Pokud region sloučím s oknem, okno bude tvaru jaký má region.

Tvorba regionů

Obdélníkový region

Public Declare Function CreateRectRgn Lib "gdi32" ( _
    ByVal X1 As Long, _
    ByVal Y1 As Long, _
    ByVal X2 As Long, _
    ByVal Y2 As Long) As Long

Kde:    X1,Y1 jsou souřadnice levého horního rohu
            X2, Y2 jsou souřadnice pravého dolního rohu.

Eliptický region

Public Declare Function CreateEllipticRgn Lib "gdi32" ( _
    ByVal X1 As Long, _
    ByVal Y1 As Long, _
    ByVal X2 As Long, _
    ByVal Y2 As Long) As Long

Kde:    X1,Y1 jsou souřadnice levého horního rohu hraničního obdélníku
            X2, Y2 jsou souřadnice pravého dolního rohu hraničního obdélníku

Obdélníkový region + zakulacené rohy

Public Declare Function CreateRoundRectRgn Lib "gdi32"( _
    ByVal X1 As Long, _
    ByVal Y1 As Long, _
    ByVal X2 As Long, _
    ByVal Y2 As Long, _
    ByVal X3 As Long, _
    ByVal Y3 As Long) As Long 

Kde:    X1,Y1 jsou souřadnice levého horního rohu hraničního obdélníku
         X2, Y2 jsou souřadnice pravého dolního rohu hraničního obdélníku
         X3 je šířka elipsy tvořící kulaté rohy
            Y3 je výška elipsy tvořící kulaté rohy

Mnohoúhelníkový region

Public Declare Function CreatePolygonRgn Lib "gdi32" ( _
    lpPoint As POINTAPI, _
    ByVal nCount As Long, _
    ByVal nPolyFillMode As Long) As Long

Kde:    lpPoint je pole bodů [x,y] ze kterých je tvořen region
            nCount je počet bodů ze kterých je tvořen region
            nPolyFillMode je mód výplně mnohostěnu:

ALTERNATE – vyplní každou oblast mezi lichými a sudými stranami mnohostěnu na každé řádce.
WINDING – vyplní každou oblast uvnitř mnohoúhelníku

Spojení regionu s oknem

Pro spojení regionu s oknem se využívá fce.:

Public Declare Function SetWindowRgn Lib "user32" ( _
    ByVal hWnd As Long, _
    ByVal hRgn As Long, _
    ByVal bRedraw As Boolean) As Long

Kde:    hWnd je handle okna
            hRgn je region (vytvořený jako návratová hodnota jednou z výše uvedených fcí)
            bRedraw má-li se okno překreslit

Měníme-li regiony nebo při ukončení aplikace je nutné region smazat z paměti a to funkcí DeleteObject.

Příklad:

Private Sub Form_Load()

Dim myRGN As Long

    myRGN = CreateEllipticRgn(0, 0, _
        Me.Width \ Screen.TwipsPerPixelX, _
        Me.Height \ Screen.TwipsPerPixelY)
    SetWindowRgn Me.hWnd, myRGN, True
    DeleteObject myRGN
End Sub

Zde se můžete stáhnout příklad, který uvádí příklad tvorby všech druhů regionu. Příště vysvětlím, jak kombinovat mnoho různých regionů do sebe, k vytváření ještě zvláštnějších tvarů.

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: