Interfejs graficzny w systemie Windows (GDI - Graphics Device Interface)



Podobne dokumenty
Formaty plików graficznych - wprowadzenie

Do obsługi plików BMP należy stworzyć klasę przechowującą zawartość obrazu i udostępniającą następujące metody:

HISPASEC. Praktyczne podejście do testowania bezpieczeństwa implementacji obsługi formatów danych. by Gynvael Coldwind

Graficzny składnik Windows Pośredniczy między aplikacją, a sterownikiem urządzenia Logiczne obiekty tworzone przez aplikację są urzeczywistniane w

Bitmapy - format i zastosowanie. Podstawowy format plików bitmapowych, dogodność zastosowania bitmap w prostych animacjach 2D.

mgr inż. Tomasz Jaworski Klasy graficzne GDI 1. Interfejs urządzeń graficznych (GDI) 2. Kontekst urządzenia

Podstawy programowania w środowisku Windows. Oto identyfikatory najczęściej obsługiwanych meldunków (przedrostek WM to skrót od Windows message):

Podstawy programowania w języku C dla środowiska Windows

Szybkie tworzenie grafiki w GcIde

Laboratorium Grafiki Komputerowej i Animacji. Ćwiczenie II. Formaty plików graficznych

Wizualne systemy programowania. Wykład 11 Grafika. dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD

Programowanie na poziomie sprzętu. Programowanie w Windows API

Jarosław Kuchta Podstawy Programowania Obiektowego. Podstawy grafiki obiektowej

Kurs WWW. Paweł Rajba.

OBRAZY ZDJĘĆ LOTNICZYCH W POSTACI CYFROWEJ JAKO WARSTWA INFORMACYJNA W GIS WSPIERAJĄCYM GOSPODARKĘ PRZESTRZENIĄ W GMINIE.

Podstawy Informatyki Wykład V

Cechy systemu Windows

C Biblioteka G2. C.1 Koncepcja biblioteki G2.

Pobieranie argumentów wiersza polecenia

Druga aplikacja Prymitywy, alpha blending, obracanie bitmap oraz mały zestaw przydatnych funkcji wyświetlających własnej roboty.

narzędzie Linia. 2. W polu koloru kliknij kolor, którego chcesz użyć. 3. Aby coś narysować, przeciągnij wskaźnikiem w obszarze rysowania.

Podstawy Processingu. Diana Domańska. Uniwersytet Śląski

Procedura okna: LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam);

Visual Studio instalacja

Reprezentacje danych multimedialnych - grafika. 1. Terminologia 2. Obrazy czarno-białe 3. Obrazy kolorowe 4. Paleta 5.

ZAPOZNANIE SIĘ Z PODSTAWOWYMI SPOSOBAMI

LCD (Liquid Crystal Display)

Funkcja zwracajca zmieniajca warto warto MM_TEXT SetMapMode GetMapMode. (0, 0) SetWindowOrgEx OffsetWindowOrgEx

Camspot 4.4 Camspot 4.5

Konfiguracja drukarki AdobePS w systemie Windows

Zmiany techniczne wprowadzone w wersji Comarch ERP Altum

Instytut Teleinformatyki

Pascal - grafika. Uruchomienie trybu graficznego. Moduł graph. Domyślny tryb graficzny

całkowicie obsługuje GDI dla kompatybilności z istniejącymi aplikacjami optymalizacja wielu cech GDI rozszerzenie o nowe możliwości

Struktury, unie, formatowanie, wskaźniki

Format BMP okiem hakera

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.

architektura komputerów w 1 1

IEEE Centronics

INFORMATYCZNE SYSTEMY STEROWANIA INSTRUKCJA ĆWICZENIA LABORATORYJNEGO

Grażyna Koba. Grafika komputerowa. materiały dodatkowe do podręcznika. Informatyka dla gimnazjum

external Data Representation

// Potrzebne do memset oraz memcpy, czyli kopiowania bloków

1.1. Programowanie w Visual C++ Programowanie w Visual C++ Środowisko programisty Visual C++ Środowisko programisty Visual C++

Arc Funkcja rysujca łuk elipsy wpisanej w prostokt o danych wierzchołkach i danych kocach łuku

DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0

Jak Windows zarządza pamięcią?

INSTRUKCJA OBSŁUGI Iron

Laboratorium Systemów SCADA

Tematy lekcji informatyki klasa 4a styczeń 2013

Dokumentacja WebMaster ver 1.0

Delphi podstawy programowania. Środowisko Delphi

4 bity zarezerwowane dla przyszłych zastosowań 11 bitów określających źródło błędu 16 bitów określających rodzaj błędu.

Temat: Tekstury uŝytkownika

GRAFIKA RASTROWA. WYKŁAD 1 Wprowadzenie do grafiki rastrowej. Jacek Wiślicki Katedra Informatyki Stosowanej

Kod źródłowy programu: program Grafika1; uses crt, graph; (1) var sterownik, tryb:smallint; (2)

HTML (HyperText Markup Language) hipertekstowy język znaczników

Programowanie aplikacji na urządzenia mobilne

Kurs programowania 2 - listy

BACKUP BAZ DANYCH FIREBIRD

Alfabetyczna lista stylów

Biblioteka standardowa - operacje wejścia/wyjścia

Architektura komputerów. dr inż. Sławomir Samolej D108 A, tel: , WWW: ssamolej.prz-rzeszow.

Ćwiczenie 3 - Tworzenie zmiennych i połączeń animacyjnych w InTouch u

Tworzenie programu i konfiguracja w LOGO! Soft Comfort V8

ROZSZERZANIE MOŻLIWOŚCI...

Sun RPC/XDR 10. listopada Dariusz Wawrzyniak (IIPP) 1

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Opis Edytora postaci Logomocji

Volcano MC-GM4 OPTICAL MOUSE USER S MANUAL MODECOM

- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy

4. Rysowanie krzywych

Rysowanie punktów na powierzchni graficznej

Księgarnia PWN: Andrzej Jaskulski - AutoCAD 2010/LT Podstawy projektowania parametrycznego i nieparametrycznego

Obsługa programu Paint. mgr Katarzyna Paliwoda

Unity 3D - własny ekran startowy i menu gry

Multimedia i interfejsy. Ćwiczenie 5 HTML5

JAVA W SUPER EXPRESOWEJ PIGUŁCE

LabVIEW PLATFORMA EDUKACYJNA Lekcja 5 LabVIEW i Arduino konfiguracja środowiska i pierwszy program

Maskowanie i selekcja

Programowanie: grafika w SciLab Slajd 1. Programowanie: grafika w SciLab

GRAFIKA WEKTOROWA. WYKŁAD 1 Wprowadzenie do grafiki wektorowej. Jacek Wiślicki Katedra Informatyki Stosowanej

Jak uzyskać efekt 3D na zdjęciach z wykorzystaniem programu InkScape

Kurs programowania. Wykład 6. Wojciech Macyna. 7 kwietnia 2016

Volcano MC-GMX4 OPTICAL MOUSE USER S MANUAL MODECOM

Spis treści CZĘŚĆ I. NIEPARAMETRYCZNE PROJEKTOWANIE 2D...31

Testy jednostkowe - zastosowanie oprogramowania JUNIT 4.0 Zofia Kruczkiewicz

Programowanie w języku C++ z użyciem Windows API

PROGRAMOWANIE GRAFIKI 2D W ŚRODOWISKU EMBARCADERO RAD STUDIO XE4 Z WYKORZYSTANIEM BIBLIOTEKI DirectX

Wykorzystanie grafiki wektorowej do tworzenia elementów graficznych stron i prezentacji

GRAFIKA. Rodzaje grafiki i odpowiadające im edytory

Laboratorium Systemów Operacyjnych. Ćwiczenie 4. Operacje na plikach

Microsoft Visual C : praktyczne przykłady / Mariusz Owczarek. Gliwice, cop Spis treści

Baner internetowy w standardzie GIF - metoda tworzenia tandemem aplikacji Illustrator - ImageReady.

Ćwiczenie 1 Automatyczna animacja ruchu

Program szkoleniowy. 24 h dydaktycznych (18 h zegarowych) NAZWA SZCZEGÓŁY CZAS

7. Dynamiczne generowanie grafiki

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

GDI+. NOWE MOŻLIWOŚCI PODSYSTEMU GRAFICZNEGO MICROSOFT WINDOWS

MS Visual Studio 2005 Team Suite - Performance Tool

Transkrypt:

Interfejs graficzny w systemie Windows (GDI - Graphics Device Interface) GDI dostarcza funkcje i odpowiednie struktury, które aplikacja może wykorzystywać do obsługi graficznego wyjścia (różne urządzenia). Typ urządzenia graficznego Display Supports drawing operations on a video display. Printer Supports drawing operations on a printer or plotter. Memory Supports drawing operations on a bitmap. Information Supports the retrieval of device data. Aplikacja uzyskuje dostęp do urządzenia wyjściowego poprzez kontekst urządzenia (DC device context). Kontekst urządzenia to struktura opisująca stan urządzenia (producent, technologia, rozdzielczość). Funkcje GDI pozwalają tworzyć kontekst urządzenia i zarządzać nimi. funkcje GDI posługują się uchwytem do kontekstu urządzenia, który identyfikuje urządzenie, przy obsłudze graficznego wyjścia. Kontekst urządzenia jest najczęściej związany z oknem. Przyporządkowanie graficznego wyjścia do okna zapobiega interferencji wyjścia wielu aplikacji. Można tworzyć graficzne urządzenia logiczne (obok istniejących urządzeń fizycznych). Urządzenie logiczne służy do symulacji urządzenia fizycznego i wykorzystywane jest najczęściej do gromadzenia efektów operacji wyjścia, które mogą być łatwo przenoszone na urządzenie fizyczne. Urządzenie fizyczne możne być wykorzystywane do przechowywania kopii zawartości urządzenia fizycznego. Program wyświetla w oknie w różnych momentach: w momencie tworzenia okna, zmiany rozmiaru okna, maksymalizacji i minimalizacji okna, wyprowadzania przetworzonych danych. Odświeżenie graficznej zawartości okna jest wymuszane przez system lub przez program. System operacyjny zarządza oknami i komunikuje program o konieczności odświeżenia zawartości okna komunikat WM_PAINT. Program może sam wyświetlać w oknie np. w momencie zmiany danych. Program może uaktualniać wyjście graficzne w sposób asynchroniczny lub synchroniczny. metoda asynchroniczna Program zaznacza obszar wymagający uaktualnienia i wymusza komunikat WM_PAINT. metoda synchroniczna wysyłanie danych graficznych do urządzenia poprzez kontekst urządzenia: z wykorzystaniem niekolejkowanego komunikatu WM_PAINT, z pominięciem komunikatu WM_PAINT. 1

Kontekst urządzenia (DC device context) obsługa komunikatu WM_PAINT HDC BeginPaint( HWND hwnd, // handle to window LPPAINTSTRUCT lppaint // pointer to structure for paint // information zwraca kontekst urządzenia, informuje o regionie, który ma zostać odświeżony, zatwierdza unieważniony region (komunikat WM_PAINT zostanie usunięty z kolejki komunikatów) BOOL EndPaint( HWND hwnd, // handle to window CONST PAINTSTRUCT *lppaint // pointer to structure for paint data zwalnia zasoby aby wywołać komunikat WM_PAINT należy unieważnić obszar roboczy okna lub jego część BOOL InvalidateRect( HWND hwnd, // handle of window with changed update region CONST RECT *lprect, // address of rectangle coordinates BOOL berase // erase-background flag typedef struct _RECT { LONG left; LONG top; LONG right; LONG bottom; } RECT; synchroniczna obsługa urządzenia graficznego z wykorzystaniem niekolejkowanego komunikatu WM_PAINT 2

BOOL UpdateWindow( HWND hwnd // handle of window BOOL RedrawWindow( HWND hwnd, // handle of window CONST RECT *lprcupdate, // address of structure with update rectangle HRGN hrgnupdate, update region UINT flags // array of redraw flags // handle of z pominięciem komunikatu WM_PAINT. HDC GetDC( HWND hwnd // handle to a window int ReleaseDC( HWND hwnd, // handle to window HDC hdc // handle to device context 3

dostęp do urządzenia poprzez użycie nazwy sterownika HDC CreateDC( LPCTSTR lpszdriver, // pointer to string specifying driver name LPCTSTR lpszdevice, // pointer to string specifying device name LPCTSTR lpszoutput, // do not use; set to NULL CONST DEVMODE *lpinitdata // pointer to optional printer data tworzenie logicznego urządzenia graficznego HDC CreateCompatibleDC( HDC hdc // handle to the device context funkcja tworzy urządzenie graficzne kompatybilne z wybranym urządzeniem; urządzenie graficzne jest odwzorowane w pamięci dynamicznej; kontekst urządzenia zawiera NIE zainicjalizowaną mapę bitową; należy skojarzyć mapę bitową o odpowiednim rozmiarze z tym kontekstem urządzenia poprzez funkcję SelectObject. uzyskiwanie informacji o urządzeniu graficznym int GetDeviceCaps( HDC hdc, // handle to the device context int nindex // index of capability to query kontekst urządzenia opisuje między innymi następujące elementy: pióro rysowanie linii, pędzel malowanie i wypełnianie obszarów, mapa bitowa opis ekranu, paleta kolorów definicja dostępnych kolorów, region obcinanie, ścieżka opis kolejnych operacji graficznych. 4

Elementy GDI 1. Tekst 2. Linie i krzywe 3. Obszary 4. Mapy bitowe 5. Odwzorowanie i transformacja 6. Metapliki 7. Regiony 8. Ścieżki 9. Obcinanie 10. Palety 5

1. Tekst czcionki rastrowe (Raster fonts) skalowalne (Vector, TrueType, OpenType fonts) informacja o bieżącej czcionce BOOL GetTextMetrics( LPTEXTMETRIC lptm // pointer to text metrics structure tworzenie i wybór czcionki: GetStockObject CreateFont CreateFontIndirect ChooseFont HFONT hfnt, holdfont; hfnt = GetStockObject(ANSI_VAR_FONT if (holdfont = SelectObject(hdc, hfnt)) { TextOut(hdc, 10, 50, "Sample ANSI_VAR_FONT text.", 26 SelectObject(hdc, holdfont } formatowanie tekstu SetBkColor, SetBkMode, SetTextAlign, SetTextCharacterExtra, SetTextColor, SetTextJustification wypisywanie tekstu DrawText, OutText 6

2. Linie i krzywe Linia jest zdefiniowane poprzez punkt startowy i punkt końcowy. Punkt końcowy nie należy do linii. Krzywe dzieli się na regularne i nieregularne. Krzywa regularna to fragment obwodu przekroju stożka. Punkt końcowy nie należy do krzywej. BOOL MoveToEx( int X, // x-coordinate of new current position int Y, // y-coordinate of new current position LPPOINT lppoint // pointer to old current position BOOL LineTo( HDC hdc, // device context handle int nxend, // x-coordinate of line's ending point int nyend // y-coordinate of line's ending point BOOL Polyline( CONST POINT *lppt, // pointer to array containing endpoints int cpoints // number of points in the array BOOL PolylineTo( CONST POINT *lppt, // pointer to array of points DWORD ccount // number of points in array BOOL PolyBezier( CONST POINT *lppt, // pointer to endpoints and control points DWORD cpoints // count of endpoints and control points 7

Pióro obiekt GDI umożliwiający rysowanie linii i krzywych. Atrybuty pióra: Width - szerokość Style - ciągła, przerywana Color - kolor Pattern - typ wzoru wypełnienia (jednolity, zakreskowanie, wzór) Hatch - rodzaj zakreskowania End Cap - zakończenie Join - łączenie lini pobranie standardowego pióra HPEN hpen; hpen = GetStockObject (WHITE_PEN SelectObject (hdc, hpen tworzenie pióra hpen = CreatePen (ipenstyle, iwidth, rgbcolor SelectObject (hdc, hpen tworzenie pióra poprzez strukturę LOGPEN logpen; hpen = CreatePenIndirect(WHITE_&logpen SelectObject (hdc, hpen dwie ostatnie opcje użycia pióra wymagają jego zniszczenia po zakończeniu używania DeleteObject (hpen Operacje rastrowe dla pióra int SetROP2( HDC hdc, // handle of device context int fndrawmode // drawing mode 8

Mix mode R2_COPYPEN R2_MASKNOTPEN R2_MASKPEN R2_MASKPENNOT R2_MERGENOTPEN R2_MERGEPEN R2_MERGEPENNOT R2_NOP R2_NOT R2_NOTCOPYPEN R2_NOTMASKPEN Description Pixel is the pen color. Pixel is a combination of the colors common to both the screen and the inverse of the pen. Pixel is a combination of the colors common to both the pen and the screen. Pixel is a combination of the colors common to both the pen and the inverse of the screen. Pixel is a combination of the screen color and the inverse of the pen color. Pixel is a combination of the pen color and the screen color. Pixel is a combination of the pen color and the inverse of the screen color. Pixel remains unchanged. Pixel is the inverse of the screen color. Pixel is the inverse of the pen color. Pixel is the inverse of the R2_MASKPEN 9

3. Obszary Figury geometryczne zawierające brzeg (pióro) i wypełnione wnętrze (pędzel). Figury: elipsa Ellipse cięciwa Chord fragment koła Pie wielobok prostokąt Polygon PolyPolygon FillRect FrameRect InvertRect Rectangle RoundRect uwaga: Rectangle rysuje prostokąt bez dolnej i prawej krawędzi. 10

BOOL Ellipse( int nleftrect, // x of bounding rectangle's upper-left corner int ntoprect, // y of bounding rectangle's upper-left corner int nrightrect, // x of bounding rectangle's lower-right corner int nbottomrect // y of bounding rectangle's lower-right corner BOOL Polygon( CONST POINT *lppoints, // pointer to polygon's vertices int ncount // count of polygon's vertices typedef struct tagpoint { LONG x; LONG y; } POINT; int SetPolyFillMode( int ipolyfillmode // polygon fill mode ALTERNATE WINDING Selects alternate mode (fills the area between odd-numbered and even-numbered polygon sides on each scan line). Selects winding mode (fills any region with a nonzero winding value). 11

Pędzel - obiekt GDI umożliwiający wypełnianie obszarów. Atrybuty pędzla: Brush Origin - punkt odniesienia wzoru Logical Brush Types - rodzaj wypełnienia: solid, stock, hatch, pattern Pattern Block Transfer - typ operacji rastrowej pobranie standardowego pędzla HBRUSH hbrush; hbrush = GetStockObject (DKGRAY_BRUSH SelectObject (hdc, hbrush tworzenie pędzla hbrush = CreateSolidBrush (rgbcolor lub hbrush = CreateHatchBrush (ihatchstyle, rgbcolor HS_CROSS Horizontal and vertical crosshatch HS_DIAGCROSS 45-degree crosshatch HS_FDIAGONAL 45-degree upward left-to-right hatch lub hbrush = CreatePatternBrush (hbmp SelectObject (hdc, hbrush tworzenie pędzla poprzez strukturę LOGBRUSH logbrush; hbrush = CreateBrushIndirect(&logbrush SelectObject (hdc, hbrush dwie ostatnie opcje użycia pędzla wymagają jego zniszczenia po zakończeniu używania DeleteObject (hbrush 12

Operacje rastrowe dla pędzla ROP PATCOPY PATINVERT DSTINVERT BLACKNESS WHITENESS Description Copies the pattern to the destination bitmap. Combines the destination bitmap with the pattern by using the Boolean OR operator. Inverts the destination bitmap. Turns all output to binary zeroes. Turns all output to binary ones. operacje rastrowe dotyczą funkcji PatBlt, która wypełnia prostokąt bieżącym pędzlem BOOL PatBlt( int nxleft, // x-coord. of upper-left corner of rect. to be filled int nyleft, // y-coord. of upper-left corner of rect. to be filled int nwidth, // width of rectangle to be filled int nheight, // height of rectangle to be filled DWORD dwrop // raster operation code 13

4. Mapy bitowe Mapa bitowa opisuje obraz lub rastrowe urządzenie graficzne. Mapa bitowa: nagłówek paleta kolorów tablica bitów opisujących kolor piksela Plik mapy bitowej 14

Nagłówek pliku mapy bitowej BITMAPFILEHEADER typedef struct tagbitmapfileheader { // bmfh WORD bftype; // Specifies the file type. It must be BM. DWORD bfsize; // Specifies the size, in bytes, // of the bitmap file. WORD bfreserved1; WORD bfreserved2; DWORD bfoffbits; } BITMAPFILEHEADER; // Specifies the offset, in bytes, // from the BITMAPFILEHEADER structure // to the bitmap bits. Nagłówek mapy bitowej BITMAPINFO The BITMAPINFO structure defines the dimensions and color information for a Win32 device-independent bitmap (DIB). typedef struct tagbitmapinfo { // bmi BITMAPINFOHEADER bmiheader; RGBQUAD bmicolors[1]; } BITMAPINFO; 15

BITMAPINFOHEADER The BITMAPINFOHEADER structure contains information about the dimensions and color format of a device-independent bitmap (DIB). (BITMAPV4HEADER, BITMAPV5HEADER ) typedef struct tagbitmapinfoheader{ // bmih DWORD bisize; // Specifies the number of bytes required // by the structure. LONG biwidth; LONG biheight; WORD biplanes; WORD bibitcount; // Specifies the number of bits per pixel. DWORD bicompression; DWORD bisizeimage; LONG bixpelspermeter; LONG biypelspermeter; DWORD biclrused; DWORD biclrimportant; } BITMAPINFOHEADER; 16

BOOL BitBlt( HDC hdcdest, // handle to destination device context int nxdest, // x-coordinate of destination rectangle's upper-left // corner int nydest, // y-coordinate of destination rectangle's upper-left // corner int nwidth, // width of destination rectangle int nheight, // height of destination rectangle HDC hdcsrc, // handle to source device context int nxsrc, // x-coordinate of source rectangle's upper-left // corner int nysrc, // y-coordinate of source rectangle's upper-left // corner DWORD dwrop // raster operation code int StretchDIBits( int XDest, // x-coordinate of upper-left corner of dest. rectangle int YDest, // y-coordinate of upper-left corner of dest. rectangle int ndestwidth, // width of destination rectangle int ndestheight, // height of destination rectangle int XSrc, // x-coordinate of upper-left corner of source rectangle int YSrc, // y-coordinate of upper-left corner of source rectangle int nsrcwidth, // width of source rectangle int nsrcheight, // height of source rectangle CONST VOID *lpbits, // address of bitmap bits CONST BITMAPINFO *lpbitsinfo, // address of bitmap data UINT iusage, // usage flags DWORD dwrop // raster operation code 17

Funkcje wyświetlające mapy bitowe BitBlt MaskBlt PatBlt StretchBlt PlgBlt SetDIBits SetDIBitsToDevice StretchDIBits kopiowanie danych (prostokąta pikseli) z urządzenia źródłowego do urządzenia docelowego składa kolor źródłowej i docelowej mapy bitowej korzystając z operacji maskowania i operacji bitowej (rastrowej) maluje prostokąt przy użyciu wybranego pędzla w otwartym kontekście urządzenia kopiuje mapę bitową z prostokąta źródłowego do prostokąta docelowego, rozciągając bądź kompresując mapę bitową do rozmiarów prostokąta docelowego jak BitBlt, pozwala obracać mapy bitowe (tylko WinNT) kopiuje dane z mapy bitowej w dowolnym formacie (DIB) do mapy bitowej kompatybilnej z urządzeniem fizycznym kopiuje dane z mapy bitowej w dowolnym formacie (DIB) do urządzenia kopiuje dane (piksele prostokąta) z mapy bitowej niezależnie od jej typu (DIB) do urządzenia (rozciąga bądź kompresuje mapę bitową do rozmiarów prostokąta docelowego) COLORREF SetPixel( int X, // x-coordinate of pixel int Y, // y-coordinate of pixel COLORREF crcolor // pixel color 18

Tworzenie mapy bitowej HBITMAP CreateBitmap( int nwidth, // bitmap width, in pixels int nheight, // bitmap height, in pixels UINT cplanes, // number of color planes used by device UINT cbitsperpel, // number of bits required to identify a color CONST VOID *lpvbits // pointer to array containing color data Tworzenie mapy bitowej kompatybilnej z urządzeniem graficznym (struktura mapy bitowej odpowiada bieżącemu trybowi pracy urządzenia graficznego) HBITMAP CreateCompatibleBitmap( int nwidth, // width of bitmap, in pixels int nheight // height of bitmap, in pixels 19

Operacje rastrowe dwójkowe operacje rastrowe (pióro i docelowa mapa bitowa) trójkowe operacje rastrowe (źródłowa mapa bitowa, pędzel, docelowa mapa bitowa) dwójkowe operacje rastrowe operand znaczenie operator logiczna operacja bitowa P pióro a AND D docelowa mapa bitowa n NOT o OR x XOR Raster operation Boolean operation (reverse Polish) Result R2_BLACK 0 Visible black line R2_COPYPEN P Visible white line R2_MASKNOTPEN DPna Visible black line R2_MASKPEN DPa Invisible blue line R2_MASKPENNOT PDna Visible red/green line R2_MERGENOTPEN DPno Invisible blue line R2_MERGEPEN DPo Visible white line R2_MERGEPENNOT PDno Visible white line R2_NOP Dn Invisible blue line R2_NOT D Visible red/green line R2_NOTCOPYPEN Pn Visible black line R2_NOTMASKPEN DPan Visible red/green line R2_NOTMERGEPEN DPon Visible black line R2_NOTXORPEN DPxn Invisible blue line R2_WHITE 1 Visible white line R2_XORPEN DPx Visible red/green line 20

trójkowe operacje rastrowe (funkcja SetROP) operand znaczenie operator logiczna operacja bitowa D docelowa mapa bitowa a AND P pędzel n NOT S źródłowa mapa bitowa o OR x XOR Boolean Raster Boolean function in Common name function operation reverse Polish CC 00CC0020 S SRCCOPY CD 00CD0888 SDPono CE 00CE0B08 SDPnao CF 00CF0224 SPno D0 00D00E0A PSDnoa D1 00D1066A PSDPxoxn D2 00D20705 PDSnax D3 00D307A4 SPDSoaxn D4 00D41D78 SSPxPDxax D5 00D50CE9 DPSanan 21