23.10.2014 Views

WinApi-grafika 2D

WinApi-grafika 2D

WinApi-grafika 2D

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

5. Grafika 6/20<br />

Pióro.<br />

Do rysowania w kontekcie urzdzenia uywamy „pióra”. Pióro okrela kolor linii, jej<br />

grubo oraz styl (cigła, kropkowana, przerywana).<br />

W systemie mamy trzy predefiniowane pióra:<br />

BLACK_PEN – domylny, czarne cigłe linie gruboci jednego piksela.<br />

WHITE_PEN<br />

NULL_PEN – pióro jest przeroczyste.<br />

Oby otrzyma w programie predefiniowane pióro wykorzystujemy funkcje GetStockObject.<br />

HPEN hPen = GetStockObject(WHITE_PEN);<br />

Aby dane pióro było biece w kontekcie urzdzenia korzystamy z funkcji SelectObject.<br />

HPEN hPenOld = SelectObject(hdc, hPen);<br />

HGDIOBJ SelectObject(HDC hdc, HGDIOBJ hGDIobj) – funkcja ustawia obiekt<br />

GDI w okrelonym kontekcie urzdzenia i zwraca uchwyt obiektu, który został zastpiony.<br />

Obiektem moe by bitmapa, czcionka, pióro, pdzel.<br />

HPEN CreatePen(int PenStyle, int iWidth, COLORREF rgbColor) -<br />

tworzy „pióro logiczne” które moe nastpnie by wybrane w DC przy pomocy SelectObject.<br />

PenStyle – okrela styl linii:<br />

PS_SOLID ______________<br />

PS_DASH __ __ __ __ __<br />

PS_DOT ............................<br />

PS_DASHDOT<br />

PS_DASHDOTDOT<br />

PS_NULL<br />

PS_INSIDEFRAME ______________ - odpowiada PS_SOLID. W przypadku prostokta<br />

jego wymiary s zmniejszane tak aby ramka mieciła si wewntrz podanych wymiarów.<br />

iWidth – dla PS_SOLID, PS_NULL i PS_INSIDEFRAME grubo linii. 0 oznacza jeden<br />

piksel.<br />

HPEN CreatePenIndirect( CONST LOGPEN * logpen) - tworzy „pióro<br />

logiczne” które moe nastpnie by wybrane w DC przy pomocy SelectObject, przy pomocy<br />

struktury LOGPEN.<br />

typedef struct tagLOGPEN {<br />

UINT PenStyle;<br />

POINT iWidth; // system ignoruje iWidth.y i bierze pod uwag jedynie<br />

iWidth.x<br />

COLORREF rgbColor;<br />

} LOGPEN, *PLOGPEN;<br />

HPEN ExtCreatePen(DWORD dwPenStyle, DWORD dwWidth, CONST<br />

LOGBRUSH * lplb, DWORD dwStyleCount, CONST DWORD *lpStyle) –<br />

tworzy rozszerzone pióro. Cz jego moliwoci nie jest wykorzystywana przy kreleniu<br />

zwykłych linii. Wicej jego właciwoci wykorzystywane jest przy kreleniu cieki za<br />

pomoc StrokePath.<br />

dwPenStyle – okrela styl linii. Mona połczy style uywane w CreatePen z stylami:<br />

PS_GEOMETRIC – dwWidth okrela grubo linii w jednostkach logicznych<br />

PS_COSMETIC – dwWidth musi si równa 1.<br />

PS_ENDCAP_ROUND – zaokrglone koce linii (domylne w CreatePen)<br />

Copyright © 2001-2003 Ewa Lach

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!