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):
-
25. listopadu 2012
-
30. srpna 2002
-
10. října 2002
-
4. listopadu 2002
-
12. září 2002
-
25. listopadu 2012
-
28. července 1998
-
31. července 1998
-
28. srpna 1998
-
6. prosince 2000
-
27. prosince 2007
-
4. května 2007