Nepravidelná okna ve VB, část 3 - 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 3

15. srpna 2000, 00.00 | Další pokračování seriálu. Tentokrát jak vytvořit region z Fontu či bitmapy a jak jej animovat.

Do této doby jste se zatím naučili vytvářet regiony z různých geometrických tvaru (obdélníku, elipsy…), ale co takhle region z některých jiných prvků… bitmapa, font. Vše je možné, třeba i takový animovaný region.

1) Region z Fontu.

Vytváření regionu z fontu není už tak jednoduché, jako to bylo při vytváření regionu z elipsy či obdélníku. Potřebujeme k tomu trochu znalosti Windows GDI.

Nejprve si musíme vytvořit chtěný font (CreateFont), ten začlenit do device-kontextu okna (SelectObject), poté spustit proceduru na skenování dráhy pera v kontextu (BeginPath) a teprve nyní můžeme přistoupit k samotnému vytisknutí textu na obrazovku (TextOut). Pak stačí již ukončit skenování (EndPath) a zkonvertovat "cestu" do regionu (PathToRegion). Dále se postupuje stejně jako v předchozích kapitolách.

Některé věci o vytváření fontu.

Public Declare Function CreateFont Lib "gdi32" Alias "CreateFontA" ( _
	ByVal Height As Long, _
	ByVal Width As Long, _
	ByVal E As Long, _
	ByVal O As Long, _
	ByVal W As Long, _
	ByVal I As Long, _
	ByVal u As Long, _
	ByVal S As Long, _
	ByVal C As Long, _
	ByVal OP As Long, _
	ByVal CP As Long, _
	ByVal Q As Long, _
	ByVal PAF As Long, _
	ByVal F As String) As Long

Kde:    Height je výška fontu
            Width je šířka fontu
            E je odklon od roviny X (v 1/10 stupně)
            O je orientace (muže být stejná jako E)
            W je tloušťka fontu ( konst. FW_*)
            I je kurzíva. True/False
            u je podtržení. True/False
            S je přeškrtnutí. True/False
            C je znaková sada ( konts. OEM_CHARSET, ANS_CHARSET…)
            OP je preciznost výstupu ( konst. OUT_* )
            CP je preciznost při ořezávání ( konst. CLIP_*)
            Q je kvalita ( konst. DRAFT_QUALITY, PROOF_QUALITY…)
            PAF je rodina fontu ( konst. FF_)
            F je název fontu (Arial, Tahoma…)

Doporučuji hodnoty: C, OP, CP, Q a PAF nechávat jako nulovou hodnotu.

Příklad:

'==============================
' nastav font "na 20x20 Tahoma Bold Italic"
mFont = CreateFont(20, 20, 0, 0, FW_BOLD, _
	True, False, False, ANSI_CHARSET, _
	OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, _
	DEFAULT_PITCH,"Tahoma")
' vyber font do kontextu
SelectObject Me.hdc, mFont
' zacni skenovat drahu
BeginPath Me.hdc
' vypis na obrazovku text aktualnim fontem
TextOut Me.hdc, 10, 10, "Ahoj", Len("Ahoj")
' konec skenovani
EndPath Me.hdc
' z "cesty" vytvor region
mRgn = PathToRegion(Me.hdc)
' nastav region pro okno
SetWindowRgn Me.hwnd, mRgn, True
' smaz vse z pameti
DeleteObject mFont
DeleteObject mRgn
'===============================

Že to nebylo nic složitého.

2) Vytvoření regionu z bitmapy.

Určitě jste již viděli pěkné okno, které mělo tvar přesně podle obrázku na něm. Tento region není zase tak těžké vytvořit, ale jak ho uchovat, aby se nemusel při každém startu aplikace vytvářet (je to zdlouhavé).

Na mé stránce v sekci Projects najdete moji free utilitku jK's Bitmap Region Editor 1.04, která umí takovéto regiony vytvořit a uložit pro pozdější využití. Stáhnout si ji můžete zde (cca 0,9 MB - potřebuje runtime knihovny pro VB6).

Tato utilita je více-jazyčná s libovolnou editací dalších jazyku, při prvním spuštění si vyberete jazyk (čeština / angličtina). Poté se Vám ukáže interface programu. Vládání je jednoduché. Obrázek si můžete natáhnout přes (Soubor / Otevřít obrázek). Podporovány jsou formáty BMP, DIB, GIF, JPG, WMF, EMF, ICO, CUR. Ten se nahraje na pracovní plochu. Pomocí kurzoru (kapátka) si vyberete barvu, která má být "neviditelná" a klinete na Vytvoř region (F5). Tím uvidíte náhled na okno, jak bude vypadat. Pokud budou ještě vidět nějaké stopy vybrané barvy (odstín barvy), můžete si nastavit "rozmazanost", která Vám dovolí vybrat barvu + tu která je v rozmezí vybrané (v %), čímž, na rozdíl od jiných takovýchto utilit dosáhnete lepšího vzhledu, hlavně u JPG souboru. Pokud se Vám region líbí, můžete ho uložit jako RGN soubor a poté, nahrát do svých programu. Nahrání umožňují dva příklady, přiložené k instalaci. RegionLoader (jako Class) a RegionLoaderOCX (jako ActiveX). S pomocí nápovědy a ukázkových příkladů si budete od této doby zdobit aplikace novým - lepším designem.

3) Animace regionu.

Je to velice jednoduché. Vytvořte si několik různých regionů, které dohromady dají animaci a tu pomocí Timeru měňte.

Příklad, který pokrývá všechny tři problematiky můžete stáhnout zde.

Doufám, že problematika různých tvarů oken, je Vám již dostatečně jasná. Pokud budete mít jakékoliv dotazy či nápady k Bitmap Region Editoru, spam_email('.cz', '@', 'centrum', 'jan.kudr');.

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: