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:
C/C++
Učíme se Win API - 16.
winapi_logo
22. dubna 2002, 00.00 | V tomto pokračování seriálu poznáme některé další funkce pro kreslení čárových objektů a poznáme další typy per.
V minulém článku jsem si ukázali úplné základy kreslení čárových objektů a použití per. Dnes si ukážeme další funkce pro kreslení čárových objektů a předvedeme další typy per.
Opět si založíme projekt typu "Win32 aplikace" a necháme si vygenerovat jeho"kostru". Na rozdíl od minulého článku budeme dnes kreslící funkce používat v handleru zprávy WM_PAINT, takže požadovaný grafický výsledek se bude na ploše okna automaticky překreslovat bez ohledu na akce uživatele, jako tomu bylo v minulém článku.
Podívejme se nejprve na výsledek a pak si postupně popíšeme jak je ho dosaženo:
Nebudeme zde popisovat a demonstrovat úplný přehled všech funkcí kreslících čárové objekty, ukážeme si 2 z nich jako ukázku. Další si můžete sami vyzkoušet podle popisu v dokumentaci. Jako první si tedy ukážeme funkci, která vykreslí sadu navazujících úseček na základě definovaných bodů. Jde o funkci PolyLine:
|
Příklad použití této funkce je modrá hvězda na screen-shotu, nakreslená takto:
|
Dále vidíme kružnici, skládající se ze 4 navazujících oblouků, odlišených vybraným perem. Jde o demonstraci funkce AngleArc:
|
Tato funkce vykreslí oblouk na kružnici definované souřadnicemi středu a poloměrem. Parametr eStartAngle určuje úhel počátku oblouku ve stupních měřeno od osy x, tedy úhel 0 je bod na pravém okraji kružnice. Délka oblouku je určena úhlem eSweepAngle (také ve stupních, tedy 90 je čtvrt kružnice). Podívejme se opět na příklad vykreslení oblouků v naší ukázce:
|
K oběma ukázkám ještě poznámku o korektním rušení grafických objektů (v našem případě per): Dříve než objekt zrušíme funkcí DeleteObject, musíme ho vyjmout z kontextu zařízení. Toto provedeme nejlépe vložením původního objektu stejného typu (tedy například pera). Již víme, že funkce SelectObjekt vrátí hodnotu objektu, který byl novým objektem nahrazen. Tuto hodnotu (handle pera typu HPEN) si při prvním vložení vlastního objektu uložíme a před zrušením nšeho objektů ji opět vložíme.
Jako poslední ukázka je vykreslení různých nespojitých typů per. Jak můžete vidět na obrázku, doprovodný text je umístěn tak, že jeho střed je (plus/mínus 1 pixel v případě lichých čísel) přesně na y-ové souřadnici dané čáry. Samozřejmě metoda pokus/omyl by v daném případě dosáhla téhož. Pokud ale chceme mít kód nezávislý na daném systémovém fontu, musíme na to trochu sofistikovaněji s využitím funkce GetTextExtentPoint32, kterou můžeme zjistit rozměry textu s fontem, který je aktuálně vybrán v daném kontextu zařízení. Funkce nám naplní strukturu SIZE, určující "opsaný obdélník" textového řetězce.
|
V naší ukázce jsem vytvořil funkci pro vykreslení jednoho typu pera, která nakreslí daným typem úsečku a vedle ní příslušný popis:
|
A by byl ukázkový kód kompletní, na závěr handler zprávy WM_PAINT, ze kterého jsou volány zde uvedené funkce:
|
V příštím pokračování se budeme zabývat kreslením plošných objektů a použití štětců. Dnešní ukázkový projekt si můžete stáhnout zde win_api_16.zip (20 kB).
Obsah seriálu (více o seriálu):
- Učíme se Win API - motivační úvod
- Učíme se WinAPI - Začínáme
- Učíme se WinAPI - 3.
- Učíme se Win API - 4.
- Učíme se Win API - 5.
- Učíme se Win API - 6.
- Učíme se Win API - 7.
- Učíme se Win API - 8
- Učíme se Win API - 9.
- Učíme se Win API - 10.
- Učíme se Win API - 11.
- Učíme se Win API - 12.
- Učíme se Win API - 13.
- Učíme se Win API - 14.
- Učíme se Win API - 15.
- Učíme se Win API - 16.
- Učíme se Win API - 17.
- Učime se Win API - 18.
- Učime se Win API - 19.
- Učime se Win API - 20.
- Učime se Win API - 21.
- Učime se Win API - 22.
- Učime se Win API - 23.
- Učime se Win API - 24.
- Učíme se Win API - 25.
- Učíme se Win API - 26.
- Učíme se Win API - 27.
- Učíme se Win API - 28.
- Učíme se Win API - uživatelsky kreslený ListBox
- Učíme se Win API - uživatelsky kreslený ListBox II
- Dialog výběru složky a naplnění ListBoxu soubory
- Vyhledávání souborů - zjištění obsahu složky
- Pracujeme s ComboBoxem ve WinAPI
- Pracujeme s ComboBoxem II.
- Rozšířený prvek ComboBoxEx
- Ovládací prvek TrackBar
- Ovládací prvek Progress Bar
Diskuse k článku
-
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