Image
7.6.2016 0 Comments

ASSEMBLER pod Windows: Grafické objekty (9. časť)

Späť na úvod >> Späť na programovanie >> Späť na seriál

Dokončenie predchádzajúcej časti.

MoveToEx

Windows NT

Win 95

Win32s

Lib

Include

Áno

Áno

Áno

gdi32.lib

gdi32.inc

Funkcia presúva danú pozíciu spojenú so zadaným kontextom zariadenia do špecifikovaného bodu. Súčasnú pozíciu používa veľa funkcií, napríklad LineTo.

Syntax: BOOL MoveToEx, HDC hdc, int X, int Y, LPPOINT lpPoint

hdc HDC: Určuje kontext zariadenia.

X int: Určuje súradnicu x cieľového bodu v logických jednotkách.

Y int: Určuje súradnicu y cieľového bodu v logických jednotkách.

lpPoint LPPOINT: Ukazovateľ na štruktúru POINT. Parameter môže byť NULL. Ak je ukazovateľ na štruktúru zadaný, funkcia MoveToEx do nej umiestni predchádzajúcu aktuálnu pozíciu.

Výsledok funkcie: BOOL: Po úspešnom vykonaní funkcie sa vráti hodnota TRUE. V ostatných prípadoch sa vráti hodnota FALSE.

LineTo

Windows NT

Win 95

Win32s

Lib

Include

Áno

Áno

Áno

gdi32.lib

gdi32.inc

 

Funkcia kreslí úsečku z aktuálneho bodu k špecifikovanému bodu. Čiara sa kreslí aktuálnym perom (PEN).

Syntax: BOOL LineTo, HDC hdc, int XEnd, int YEnd

hdc HDC: Určuje kontext zariadenia.

Xend int: Určuje súradnicu x koncového bodu čiary v logických jednotkách.

YEnd int: Určuje súradnicu y koncového bodu čiary v logických jednotkách.

Výsledok funkcie: BOOL: Po úspešnom vykonaní funkcie sa vráti hodnota TRUE. V ostatných prípadoch sa vráti hodnota FALSE.

 

SetRect

Windows NT

Win 95

Win32s

Lib

Include

Áno

Áno

Áno

user32.lib

user32.inc

 

Funkcia nastavuje súradnice štruktúry RECT na zadané hodnoty.

Syntax: BOOL SetRect, LPRECT lprc, int xLeft, int yTop, int xRight, int yBottom

lprc LPRECT: Ukazovateľ na štruktúru RECT

xLeft int: Určuje súradnicu x ľavého horného rohu pravouholníka.

yTop int: Určuje súradnicu y ľavého horného rohu pravouholníka.

xRight int: Určuje súradnicu x pravého dolného rohu pravouholníka.

yBottom int: Určuje súradnicu y pravého dolného rohu pravouholníka.

Výsledok funkcie: BOOL: Po úspešnom vykonaní funkcie sa vráti hodnota TRUE. V ostatných prípadoch sa vráti hodnota FALSE.

 

CreateSolidBrush

Windows NT

Win 95

Win32s

Lib

Include

Áno

Áno

Áno

gdi32.lib

gdi32.inc

Funkcia CreateSolidBrush vytvára logický štetec (BRUSH) zadanej farby.

Syntax: HBRUSH CreateSolidBrush, COLORREF crColor

CrColor COLORREF: Určuje RGB hodnotu farby štetca.

Výsledok funkcie: HBRUSH: Po úspešnom vykonaní funkcie sa vráti handle logického štetca. V ostatných prípadoch sa vráti hodnota NULL.

 

CreatePen

Windows NT

Win 95

Win32s

Lib

Include

Áno

Áno

Áno

gdi32.lib

gdi32.inc

Funkcia CreatePen sa používa na vytvorenie logického pera, špecifikovaného štýlom, šírkou a farbou. Pero sa môže použiť pri kreslení čiar a kriviek.

Syntax: HPEN CreatePen, int fnPenStyle, int nWidth, COLORREF crColor

fnPenStyle int: Určuje štýl pera (pozri tab. 1).

nWidth int: Určuje šírku pera v logických jednotkách.

crColor COLORREF: Farba pera.

Štýl pera

Význam

PS_SOLID

Celistvá (plná) čiara.

PS_DASH

Prerušovaná čiara. Treba špecifikovať šírku pera, ktorá je pri použití tohto štýlu 1 alebo menej jednotiek zariadenia.

PS_DOT

Bodová čiara. Treba špecifikovať šírku pera, ktorá je pri použití tohto štýlu 1 alebo menej jednotiek zariadenia.

PS_DASHDOT

Čiara zložená z čiarok a bodiek, ktoré sa pravidelne striedajú. Treba špecifikovať šírku pera, ktorá je pri použití tohto štýlu 1 alebo menej jednotiek zariadenia.

PS_DASHDOTDOT

Čiara zložená z čiarok a dvoch bodiek, ktoré sa pravidelne striedajú. Treba špecifikovať šírku pera, ktorá je pri použití tohto štýlu 1 alebo menej jednotiek zariadenia.

PS_NULL

Čiara kreslená týmto perom nebude viditeľná.

PS_INSIDEFRAME

Čiara vykreslená týmto perom bude celistvá (plná). Ak funkcie GDI používajú na kreslenie toto pero a používajú ohraničujúci pravouholník, zadaný ako jeden zo svojich parametrov, obrázok sa zmenší tak, aby sa celý zmestil do ohraničujúceho pravouholníka. Pri výpočte sa berie do úvahy šírka pera. Toto platí len pre geometrické perá.

Tab. 1

Výsledok funkcie: HPEN: Po úspešnom vykonaní funkcie sa vráti handle logického pera. V ostatných prípadoch sa vráti hodnota NULL.

 

GetStockObject

Windows NT

Win 95

Win32s

Lib

Include

Áno

Áno

Áno

gdi32.lib

gdi32.inc

 

Funkcia GetStockObject vracia handle na jeden z preddefinovaných systémových objektov, ako sú  perá, štetce, fonty alebo palety. Tieto objekty existujú v systéme stále, na ich vytvorenie nie sú potrebné žiadne zvláštne zdroje. Takto vytvorené objekty sa nesmú mazať funkciou DeleteObject.

Syntax: HGDIOBJ GetStockObject, int fnObject                                           

fnObject int: Špecifikuje typ objektu. Parametrom môže byť jedna z hodnôt uvedených v tabuľke 2.

 

Typ objektu

Význam

BLACK_BRUSH

Čierny štetec

DKGRAY_BRUSH

Tmavo hnedý štetec

GRAY_BRUSH  

Šedý štetec

HOLLOW_BRUSH

Prázdny štetec (ekvivalent k NULL_BRUSH )

LTGRAY_BRUSH

Svetlosivý štetec

NULL_BRUSH

Prázdny štetec (ekvivalent k HOLLOW_BRUSH )

WHITE_BRUSH

Biely štetec

BLACK_PEN

Čierne pero

NULL_PEN

Prázdne pero

WHITE_PEN

Biele pero

ANSI_FIXED_FONT

Systémové písmo s pevným rozstupom (monospace)

ANSI_VAR_FONT

Systémové písmo s variabilným rozstupom (proporcionálne)

DEVICE_DEFAULT_FONT

Od zariadenia závislé písmo; platné iba pre Windows NT

DEFAULT_GUI_FONT

Implicitné písmo objektov používateľského rozhrania, napr. menu, dialógové okná a pod.; platné iba pre Windows 95

OEM_FIXED_FONT

Pôvodné (OEM) písmo s pevným rozstupom (monospace)

SYSTEM_FONT

Systémové písmo; implicitne Windows používa systémové písmo na zobrazenie menu, dialógových riadiacich prvkov a textov; od verzie Windows 3.0 je systémové písmo proporcionálne, staršie verzie Windows používali písmo s pevným rozstupom.

SYSTEM_FIXED_FONT

Systémové písmo s pevným rozstupom; bolo používané vo verzii Windows menšej ako 3.0; tento objekt je prístupný len pre zlučiteľnosť so staršími verziami Windows  

DEFAULT_PALETTE

Implicitná paleta; paleta obsahuje statické farby systémovej palety

Tab. 2

Výsledok funkcie: HGDIOBJ: Po úspešnom vykonaní funkcie sa vráti handle na požadovaný objekt. V ostatných prípadoch sa vráti hodnota NULL.

 

FillRect

Windows NT

Win 95

Win32s

Lib

Include

Áno

Áno

Áno

user32.lib

user32.inc

Funkcia pomocou aktuálneho štetca vyplňuje zadaný pravouholník.

Syntax: int FillRect, HDC hDC,     CONST RECT lprc, HBRUSH hbr

HDC HDC: Určuje kontext zariadenia.

lprc CONST RECT: Ukazovateľ na štruktúru RECT, ktorá definuje vyplňovanú oblasť.

hbr HBRUSH: Handle logického štetca, ktorý sa použije na vyplnenie pravouholníka.

Výsledok funkcie: BOOL: Po úspešnom vykonaní funkcie sa vráti hodnota TRUE. V ostatných prípadoch sa vráti hodnota FALSE.

 

CreateHatchBrush

Windows NT

Win 95

Win32s

Lib

Include

Áno

Áno

Áno

gdi32.lib

gdi32.inc

Funkcia CreateHatchBrush vytvára logický štetec špecifikovaný vzorom šrafovania a farbou.

Syntax: HBRUSH CreateHatchBrush, int fnStyle, COLORREF clrref

fnStyle int: Špecifikuje vzor šrafovania. Môže to byť jedna z hodnôt z tabuľky 3.

COLORREF clrref: Určuje farbu popredia, ktorá sa použije pri vykresľovaní vzoru šrafovania.

Vzor šrafovania

Význam

HS_BDIAGONAL

Vzor bežiaci zľava zhora napravo dolu pod uhlom 45 stupňov

HS_CROSS

Vzor obsahujúci horizontálne (vodorovné) aj vertikálne (zvislé) čiary

HS_DIAGCROSS

Vzor podobný HS_CROSS, ale otočený o 45 stupňov

HS_FDIAGONAL

Vzor bežiaci zľava zdola napravo hore pod uhlom 45 stupňov

HS_HORIZONTAL

Vzor obsahujúci horizontálne (vodorovné) čiary

HS_VERTICAL

Vzor obsahujúci vertikálne (zvislé) čiary

Tab. 3

Výsledok funkcie: HBRUSH: Po úspešnom vykonaní funkcie sa vráti handle nového štetca. V ostatných prípadoch sa vráti hodnota NULL.

 

CreateCompatibleBitmap

Windows NT

Win 95

Win32s

Lib

Include

Áno

Áno

Áno

gdi32.lib

gdi32.inc

Funkcia CreateCompatibleBitmap vytvára bitovú mapu združenú so zariadením, ktoré je spojené s daným kontextom zariadenia DC. Výsledná pamäťová bitová mapa má rovnaký počet farebných rovín a rovnaký počet bitov farieb na bod ako zariadenie. Bitovú mapu môžete pre kreslenie vybrať do pamäťového kontextu zariadenia.

Syntax: HBITMAP CreateCompatibleBitmap, HDC hdc, int nWidth, int nHeight

hdc HDC: Identifikátor kontextu zariadenia.

nWidth int: Šírka bitovej mapy v bodoch.

nHeight int: Výška bitovej mapy v bodoch.

Výsledok funkcie: HBITMAP: Po úspešnom vykonaní funkcie sa vráti handle novej bitovej mapy. V ostatných prípadoch sa vráti hodnota NULL.

 

CreateCompatibleDC

Windows NT

Win 95

Win32s

Lib

Include

Áno

Áno

Áno

gdi32.lib

gdi32.inc

Funkcia CreateCompatibleDC vytvára pamäťový kontext zariadenia DC. Skôr ako je možné použiť pamäťový kontext zariadenia pre operácie kreslenia, aplikácia musí vybrať bitovú mapu so správnou šírkou a výškou do DC. Len čo je bitová mapa vybraná, DC môže pripravovať obrazce, ktoré bude kopírovať na obrazovku alebo tlačiareň. V prípade, že už nepotrebujete pamäťový kontext, môžete ho uvoľniť pomocou funkcie DeleteDC. Funkcia CreateCompatibleDC môže byť použitá iba so zariadeniami, ktoré umožňujú rastrové operácie. Aplikácia môže pomocou funkcie GetDeviceCaps zistiť, či dané zariadenie tieto operácie podporuje.

Syntax: HDC CreateCompatibleDC, HDC hdc

hdc HDC: Identifikátor kontextu zariadenia. Ak je tento parameter NULL, potom funkcia vytvorí pamäťový DC zlučiteľný s aktuálnou obrazovkou aplikácie.

Výsledok funkcie: HDC: Po úspešnom vykonaní funkcie sa vráti handle pamäťového DC. V ostatných prípadoch sa vráti hodnota NULL.

 

CreateBrushIndirect

Windows NT

Win 95

Win32s

Lib

Include

Áno

Áno

Áno

gdi32.lib

gdi32.inc

Funkcia CreateBrushIndirect vytvára logický štetec, ktorý je definovaný štruktúrou LOGBRUSH. Štruktúra sa skladá z troch parametrov: štýl, farba a vzor.

Syntax: HBRUSH CreateBrushIndirect, CONST LOGBRUSH *lplb

*lplb LOGBRUSH: Ukazovateľ na štruktúru LOGBRUSH.

 

Definícia štruktúry LOGBRUSH:

struct tagLOGBRUSH {

   UINT  lbStyle;

   COLORREF  lbColor;

   LONG  lbHatch;

} LOGBRUSH;

 

lbStyle UINT: Štýl štetca. Môže to byť jedna z hodnôt z tabuľky 4.

lbColor COLORREF: Farba štetca. Ak je farba lbStyle BS_HOLLOW alebo BS_PATTERN, potom sa tento parameter ignoruje. V prípade, že je lbStyle BS_DIBPATTERN alebo BS_DIBPATTERNPT, dolná časť slova lbColor sa nastaví na DIB_PAL_COLORS alebo DIB_RGB_COLORS. DIB_PAL_COLORS znamená, že DIB obsahuje pole 16-bitových indexov do práve platnej logickej palety. DIB_RGB_COLORS znamená, že DIB obsahuje konkrétne hodnoty RGB farieb.

lbHatch LONG: Štýl šrafovania štetca. Pokiaľ je lbStyle BS_DIBPATTERN, potom je tento člen handle na DIB. Ak je lbStyle BS_DIBPATTERNPT, potom je tento člen ukazovateľ na DIB. Ak je lbStyle BS_PATTERN, potom je tento člen handle bitovej mapy. Pokiaľ je lbStyle BS_HATCHED, potom tento člen môže byť jedna z hodnôt z tabuľky 3.

Štýl

Význam

BS_DIBPATTERN

Štetec kresliaci vzorom definovaným od zariadenia nezávislou bitovou mapou (DIB). Ak je lbStyle BS_DIBPATTERN, člen lbHatch obsahuje handle na DIB. Windows 95 nepodporuje vytváranie štetcov z bitových máp väčších než 8 8 bodov.

BS_DIBPATTERN8X8   

To isté ako BS_DIBPATTERN.

BS_DIBPATTERNPT

Štetec kresliaci vzorom definovaným od zariadenia nezávislou bitovou mapou (DIB). Ak je lbStyle BS_DIBPATTERN, člen lbHatch obsahuje handle na DIB.

BS_HATCHED

Šrafovací štetec.

BS_HOLLOW

Prázdny štetec.

BS_NULL

To isté ako BS_HOLLOW.

BS_PATTERN

Štetec kresliaci vzorom definovaným pamäťovou bitovou mapou.

BS_PATTERN8X8

To isté ako BS_PATTERN.

BS_SOLID

Štetec kresliaci plnou farbou.

Tab. 4

GetDC

Windows NT

Win 95

Win32s

Lib

Include

Áno

Áno

Áno

user32.lib

user32.inc

Funkcia GetDC umožňuje získať handle obrazovkového kontextu zariadenia (DC) klientskej časti okna. Obrazovkový kontext je možné použiť v následných funkciách GDI na kreslenie v klientskej oblasti okna. Podľa štýlu okna funkcia získa DC buď všeobecné, alebo súkromné triedy. Implicitné atribúty sa priraďujú všeobecnému DC po každom jeho získaní. Atribúty pre DC triedy a súkromné zostávajú nezmenené. Po ukončení používania DC sa pomocou funkcie ReleaseDC kontext zariadenia uvoľní. Táto operácia nie je potrebná pre DC triedy alebo súkromné.

Syntax: HDC GetDC, HWND hWnd            

hWnd HWND: Identifikuje okno, ktorého kontext zariadenia DC sa má získať.

Výsledok funkcie: HDC: Po úspešnom vykonaní funkcie je to DC klientskej oblasti daného okna. V ostatných prípadoch sa vráti hodnota NULL.

 

DeleteDC

Windows NT

Win 95

Win32s

Lib

Include

Áno

Áno

Áno

gdi32.lib

gdi32.inc

 

Funkcia DeleteDC zmaže vybraný kontext zariadenia (DC).

Syntax: BOOL DeleteDC, HDC hdc

hdc HDC: Identifikuje kontext zariadenia.

Výsledok funkcie: BOOL: Po úspešnom vykonaní funkcie sa vráti hodnota TRUE. V ostatných prípadoch sa vráti hodnota FALSE

 

DeleteObject

Windows NT

Win 95

Win32s

Lib

Include

Áno

Áno

Áno

gdi32.lib

gdi32.inc

 

Funkcia DeleteObject ruší logický objekt GDI. Existuje veľa rôznych funkcií na vytvorenie logických objektov. Všetky tieto objekty okrem objektov vytvorených pomocou funkcie GetStockObject musia byť zmazané, pretože inak sa stráca pamäť v GDI. Medzi objekty, ktoré je potrebné zmazať, patria perá, bitové mapy, štetce, oblasti, palety a písma. Nepoužívajte funkciu DeleteObject na zmazanie objektov, ktoré sú práve zvolené v kontexte zariadenia. Windows 95 zmaže objekt, ktorý je práve zvolený v kontexte zariadenia tak, že vytvorí mŕtvy objekt (zombie). Vo Windows NT volanie tejto funkcie na objekt práve zvolený v kontexte zariadenia dopadne neúspešne.

Syntax: BOOL DeleteObject, HGDIOBJ hObject

hObject HGDIOBJ: Handle objektu GDI. Objektom môže byť logické pero, štetec, font, bitová mapa, region alebo paleta. Pokiaľ má byť objekt zmazaný, nesmie byť zvolený v kontexte zariadenia.

Výsledok funkcie: BOOL: Po úspešnom vykonaní funkcie sa vráti hodnota TRUE. V ostatných prípadoch sa vráti hodnota FALSE.

 

ReleaseDC

Windows NT

Win 95

Win32s

Lib

Include

Áno

Áno

Áno

user32.lib

user32.inc

 

Funkcia ReleaseDC uvoľňuje kontext zariadenia, t. j. umožňuje jeho ďalšie použitie inými aplikáciami. ReleaseDC uvoľňuje len obyčajný DC a DC okna, nemá žiadny vplyv na DC triedy a súkromný DC. Funkciu treba použiť po dokončení výstupu.

Syntax: int ReleaseDC, HWND hWnd, HDC hDC

hWnd HWND: Okno, ktorého kontext zariadenia DC sa má  uvoľniť.

hDC HDC: Handle kontextu zariadenia DC, ktorý sa má uvoľniť.

Výsledok funkcie:  Ak sa kontext zariadenia DC podarí uvoľniť, vráti sa hodnota TRUE. V ostatných prípadoch sa vráti hodnota FALSE.

Teraz by tu mal nasledovať jednoduchý príklad použitia uvedených funkcií, ale z priestorových dôvodov ho nájdete na webovej stránke časopisu www.pcrevue.sk v sekcii Assembler.

 

Literatúra

[1]  Simon, R. J. – Gouker, M. – Barnes, B. C.: Win32 API. Zväzok 1, 2, 3. UNIS publishing, Brno 1997.

[2]  Richter, J.: Windows pro pokročilé a experty. Computer Press, Praha, 1997.

[3]  Petzold, Ch.: Programování ve Windows – Win32 API. Computer Press, Praha 1999.

 

Slovník skratiek

GDI (Graphic Device Interface) – rozhranie grafického zariadenia.

 


Nechajte si posielať prehľad najdôležitejších správ emailom

Mohlo by Vás zaujímať

Ako na to

Tipy a triky: Ako na snímku obrazovky na akomkoľvek počítači s Windows?

02.12.2016 00:13

Ak snímky obrazovky robíte často apotrebujete napríklad funkcie na posun stránok alebo snímanie zobrazenia pri vyššom rozlíšení displeja, zrejme používate nejakú špecializovanú aplikáciu. Väčšina použ ...

Ako na to 1

Tipy a triky: Ako aplikácii prednastaviť spúšťanie s administrátorskými právami?

30.11.2016 00:10

Väčšina aspoň trochu skúsenejších používateľov vie, že aj keď máte na operačnom systéme Windows vytvorený administrátorský účet, aplikácie pre bezpečnosť nefungujú vždy splnými administrátorskými práv ...

Ako na to 2

Tipy a triky: Ako vypnúť uzamykaciu obrazovku vo Windows 10?

29.11.2016 00:10

Rozčuľuje vás, že pred každým prihlásením doúčtu vášho počítača musíte prejsť uzamykacou obrazovkou? Windows 10 na tejto obrazovke ukazuje čas,dátum anejakú zaujímavú fotografiu zrôznych kútov sveta. ...

Žiadne komentáre

Vyhľadávanie

Kyocera - prve-zariadenia-formatu-a4-s-vykonom-a3

Najnovšie videá