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 14/20<br />

Aby skopiowa zawarto tablicy zawierajcej bity mapy bitowej do istniejcej mapy bitowej<br />

naley uy funkcji:<br />

LONG SetBitmapBits(HBITMAP hBitmap, LONG dwCount, LPVOID<br />

pBitmap)<br />

dwCount - ilo bitów do przekopiowania do tablicy wskazanej przez pBitmap. Liczb<br />

wszystkich bitów w mapie bitowej mona wyliczy za pomoc wzoru:<br />

dwCount = (DWORD) bitmap.bmWidhtBytes * bitmap.bmHeight *<br />

bitmap.bmPlanes;<br />

Moemy pobra informacje o bitmapie za pomoc funkcji:<br />

GetObject(hBitmap, sizeof(BITMAP), (LPVOID) &bitmap) – funkcja<br />

kopiuje informacje do struktury BITMAP pozostawiajc pole bmBits puste.<br />

Aby otrzyma dostp do mapy bitowej naley wywoła funkcj:<br />

LONG GetBitmapBits(HBITMAP hBitmap, LONG dwCount, LPVOID<br />

pBitmap)<br />

W kontekcie zwykłego urzdzenia nie mona wybra mapy bitowej. Jest to moliwe jedynie<br />

w kontekcie urzdzenia pamiciowego. Kontekst urzdzenia pamiciowego ta taki DC, który<br />

ma „powierzchnie wywietlania” istniejc tylko w pamici komputera i moemy go<br />

utworzy za pomoc funkcji:<br />

HDC CreateCompatibleDC(HDC hdc) – funkcja tworzy DC pamiciowego , który ma<br />

“powierzchni wywietlania” zawierajc dokładnie 1 piksel monochromatyczny.<br />

Aby powikszy tak utworzony DC pamiciowego naley wybra map bitow w DC:<br />

SelectObject(hdcMem, hBitmap);<br />

Z tak utworzonym DC moesz robi to samo co z zwykłym DC – zmienia atrybuty,<br />

sprawdza ich wartoci, wybiera w kontekcie pióro, pdzel i regiony.<br />

Wszelkie zmiany poczynione na mapie bitowej pojawiaj si na powierzchni wywietlania<br />

DC pamiciowego. Wszystko co narysujesz w DC pamiciowego jest tak naprawd rysowane<br />

na mapie bitowej.<br />

Bitmap bdziemy wywietla w DC obszaru roboczego naszego okna przekazujc bity<br />

bitmapy midzy kontekstami urzdzenia.<br />

BOOL PatBlt(HDC hdc, int xDest, int yDest, int xWidth, int<br />

yHeight, DWORD dwROP) – funkcja rysuje prostokt uywajc biecego pdzla.<br />

Funkcja dokonuje operacji logicznych na kolorach pdzla i ekranu.<br />

xDst, yDst – punkt logiczny wskazujcy na lewy górny naronik prostokta dla trybu<br />

MM_TEXT. W pozostałych trybach naronik prostokta zale od znaku przy dwóch<br />

kolejnych parametrach.<br />

xWidth, yHeight – warto bezwzgldna z tych wartoci wyznacza szeroko i wysoko<br />

prostokta<br />

dwROP – okrela operacje wykonywane na kolorach pdzla i ekranu:<br />

BLACKNESS – wypełnia prostokt czarnym kolorem<br />

WHITENESS – wypełnia prostokt białym kolorem<br />

DSTINVERT – odwraca kolor ekranu<br />

PATINVERT – łczy kolory za pomoc operacji logicznej XOR (Pdzel ^ Ekran)<br />

PATCOPY – przekopiowuje kolory pdzla<br />

Copyright © 2001-2003 Ewa Lach

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

Saved successfully!

Ooh no, something went wrong!