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



Podobne dokumenty
Programowanie na poziomie sprzętu. Programowanie w Windows API

Podstawy programowania w języku C dla środowiska Windows

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

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

Komunikaty w Windows. Jarosław Kuchta

Jarosław Kuchta Podstawy Programowania Obiektowego. Podstawy grafiki obiektowej

Celem ćwiczenia jest zapoznanie się z podstawowymi funkcjami i pojęciami związanymi ze środowiskiem AutoCAD 2012 w polskiej wersji językowej.

1.3. Tworzenie obiektów 3D. Rysunek 1.2. Dostępne opcje podręcznego menu dla zaznaczonego obiektu

CorelDRAW. wprowadzenie

Podstawowy projekt OpenGL utworzony przy użyciu środowisk programistycznych firmy Microsoft.

Wprowadzenie do programowania w Windows

Laboratorium Grafiki Komputerowej i Animacji. Ćwiczenie I. Wprowadzenie do programowania w Windows

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

Obsługa programu Paint. mgr Katarzyna Paliwoda

Programowanie w środowisku Windows. mgr inż. Krzysztof Mossakowski k.mossakowski@mini.pw.edu.pl

PROE wykład 8 Interfejs użytkownika (GUI) dr inż. Jacek Naruniec

Laboratorium z Grafiki InŜynierskiej CAD. Rozpoczęcie pracy z AutoCAD-em. Uruchomienie programu

Formaty plików graficznych - wprowadzenie

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.

Tworzenie prezentacji w MS PowerPoint

Podstawy programowania w języku C dla środowiska Windows

IFiZR Laboratorium 5 Info

Ćw. I Projektowanie opakowań transportowych cz. 1 Ćwiczenia z Corel DRAW

Projektowanie i programowanie aplikacji biznesowych. Wykład 2

1. Przypisy, indeks i spisy.

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

Lokalizacja jest to położenie geograficzne zajmowane przez aparat. Miejsce, w którym zainstalowane jest to urządzenie.

Baltie 3. Podręcznik do nauki programowania dla klas I III gimnazjum. Tadeusz Sołtys, Bohumír Soukup

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

I Tworzenie prezentacji za pomocą szablonu w programie Power-Point. 1. Wybieramy z górnego menu polecenie Nowy a następnie Utwórz z szablonu

Dodanie nowej formy do projektu polega na:

MS Word Długi dokument. Praca z długim dokumentem. Kinga Sorkowska

Dodawanie grafiki i obiektów

Microsoft Visual C++

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

Cechy systemu Windows

Maskowanie i selekcja

Expo Composer Garncarska Szczecin tel.: info@doittechnology.pl. Dokumentacja użytkownika

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

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

KGGiBM GRAFIKA INŻYNIERSKA Rok III, sem. VI, sem IV SN WILiŚ Rok akademicki 2011/2012

Budowa aplikacji z graficznym interfejsem użytkownika - GUI (Graphic User Interface)

Windows 10 - Jak uruchomić system w trybie

5.4. Tworzymy formularze

Zadanie 11. Przygotowanie publikacji do wydrukowania

Temat: Organizacja skoroszytów i arkuszy

4. Rysowanie krzywych

dokumentacja Edytor Bazy Zmiennych Edytor Bazy Zmiennych Podręcznik użytkownika

Papyrus. Papyrus. Katedra Cybernetyki i Robotyki Politechnika Wrocławska

Minimalna wspierana wersja systemu Android to zalecana 4.0. Ta dokumentacja została wykonana na telefonie HUAWEI ASCEND P7 z Android 4.

Compas 2026 Vision Instrukcja obsługi do wersji 1.07

Szybkie tworzenie grafiki w GcIde

Rozdział II. Praca z systemem operacyjnym

Ćwiczenie pochodzi ze strony

Dodawanie operacji dodatkowych w WAPRO Mag.

UNIWERSYTET RZESZOWSKI KATEDRA INFORMATYKI

Ćwiczenie 4 Konspekt numerowany

DesignCAD 3D Max 24.0 PL

Zegary. Zegary (timers) umożliwiają cykliczne w danych odstępach czasu wykonać określone operacje.

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

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

etrader Pekao Podręcznik użytkownika Strumieniowanie Excel

Zajęcia nr 15 JavaScript wprowadzenie do JavaScript

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

Praca w programie Power Draft

Wprowadzenie do rysowania w 3D. Praca w środowisku 3D

Janusz Ganczarski. OpenGL Pierwszy program

Spis treści. S t r o n a 2

Wybieramy File->New->Project Wybieramy aplikację MFC->MFC Application jak na rysunku poniżej:

Rysowanie precyzyjne. Polecenie:

Google Earth. Co to jest Google Earth? Co to jest KML? Skąd można pobrać Google Earth?

SPIS TREŚCI: 1. INSTALACJA SYSTEMU SIMPLE.ERP LOGOWANIE DO SYSTEMU ZMIANA HASŁA PLANOWANIE INFORMACJE DODATKOWE...

Programowanie obiektowe

Przypisy i przypisy końcowe

REJESTRACJA PROJEKTÓW

Kontrola topto. 1. Informacje ogólne. 2. Wymagania sprzętowe i programowe aplikacji. 3. Przykładowa instalacja topto. 4. Komunikacja.

Projektowanie graficzne. Wykład 2. Open Office Draw

Spis treści 1. Wstęp Logowanie Główny interfejs aplikacji Ogólny opis interfejsu Poruszanie się po mapie...

4.6 OpenOffice Draw tworzenie ilustracji

MATLAB Prowadzący: dr hab. inż. Marek Jaszczur Poziom: początkujący

Politechnika Gdańska Katedra Optoelektroniki i Systemów Elektronicznych

Edytor tekstu MS Office Word

Nr: 15. Tytuł: Kancelaris w systemie Windows 8 i Windows 8.1. Data modyfikacji:

MS Access formularze

1. Pobieranie i instalacja FotoSendera

1. Wybierz polecenie rysowania linii, np. poprzez kliknięcie ikony W wierszu poleceń pojawi się pytanie o punkt początkowy rysowanej linii:

CorelDRAW. 1. Rysunek rastrowy a wektorowy. 2. Opis okna programu

VetLINK moduł MAPA Instrukcja obsługi

PWI Instrukcja użytkownika

Site Installer v2.4.xx

Rejestracja faktury VAT. Instrukcja stanowiskowa

Podstawy WINDOWS 9x, 2000, XP

Podstawy Informatyki Wykład V

Okno logowania. Okno aplikacji. 1. Logowanie i rejestracja

Prezentacja multimedialna MS PowerPoint 2010 (podstawy)

Praca w programie Power Draft

DARMOWA PRZEGLĄDARKA MODELI IFC

Tworzenie aplikacji Windows Podstawy obsługi komunikatów Windows (Delphi)

Transkrypt:

GRAFIKA KOMPUTEROWA Podstawy programowania w środowisku Windows 1. Struktura programu w środowisku MS Windows Program dla Windows powinien mieć przynajmniej jedno okno (chociaż może być ono niewidoczne). Z punktu widzenia kodu podstawowe elementy okna to klasa opisująca okno oraz funkcja definiująca reakcje okna na zdarzenia systemu Windows. Windows rozróżnia sto kilkadziesiąt różnych zdarzeń, z czego część ma liczne warianty. Funkcja okna może zawierać definicje reakcji na wybrane zdarzenia, pozostałe mogą być obsługiwane standardowo. O występowaniu zdarzeń aplikacje są przez system Windows informowane za pomocą meldunków (komunikatów). W uproszczeniu schemat programu dla Windows wygląda zatem następująco. FunkcjaOkna() { } //obsługuje meldunki decyduje o zachowaniu okna WinMain() //rejestruje klasę opisującą okno //wykonuje pętlę przechwytującą meldunki od systemu { //pętla obsługi zdarzeń. while (GetMessage()) // pobranie meldunku z kolejki { TranslateMessage(); // zamiana kodów klawiszy na znaki DispatchMessage(); // skierowanie meldunku do obsługi } } 2. Meldunki (komunikaty) systemu Oto identyfikatory najczęściej obsługiwanych meldunków (przedrostek WM to skrót od Windows message): WM_LBUTTONDOWN naciśnięcie lewego przycisku myszy, WM_LBUTTONUP zwolnienie lewego przycisku myszy, WM_RBUTTONDOWN naciśnięcie prawego przycisku myszy, WM_RBUTTONUP zwolnienie prawego przycisku myszy, WM_LBUTTONDBLCLK podwójne kliknięcie lewym przyciskiem myszy, WM_RBUTTONDBLCLK podwójne kliknięcie prawym przyciskiem myszy, WM_MOUSEMOVE poruszenie myszy, WM_PAINT obszar roboczy okna aplikacji wymaga przemalowania, WM_CREATE komunikat wysyłany w chwili tworzenia okna, WM_DESTROY komunikat wysyłany w celu zamknięcia okna, WM_COMMAND komunikat wysyłany m.in., gdy zostanie wybrana opcja w menu. Z meldunkiem, oprócz jego identyfikatora (kodu), związane są dwa parametry: parametr krótki wparam (liczba 16-bitowa) i parametr długi lparam (liczba 32-bitowa). Na przykład komunikaty związane z aktywnością myszy są wysyłane z parametrem lparam zawierającym współrzędne myszy i parametrem wparam opisującym stan klawiszy Shift, Ctrl oraz przycisków myszy. Parametr wparam może zawierać sumę logiczną następujących stałych: 1

MK_CONTROL MK_LBUTTON MK_MBUTTON MK_RBUTTON MK_SHIFT wciśnięty przycisk CTRL, wciśnięty lewy przycisk myszy, wciśnięty środkowy przycisk myszy, wciśnięty prawy przycisk myszy, wciśnięty przycisk SHIFT. 3. Okna i ich klasy Definicja klasy okna jest wpisana w strukturę typu WNDCLASS. Zawiera ona 10 pól, z których najistotniejsze to: lpfnwndproc adres funkcji okna, definiującej reakcje okna na określone meldunki, lpszclassname łańcuch ASCIIZ zawierający nazwę klasy, hinstance kopia globalnego parametru o tej samej nazwie, który aplikacja otrzymuje od Windows w chwili uruchomienia, a który zawiera bieżący identyfikator procesu, tzn. działającego egzemplarza programu. Nową, zdefiniowaną klasę trzeba w systemie zarejestrować, do czego służy funkcja RegisterClass: ATOM RegisterClass(CONST WNDCLASS* lpwcx /*adres struktury z definicją klasy*/); Następnie należy utworzyć okno za pomocą funkcji CreateWindow: HWND CreateWindow( LPCTSTR lpclassname, LPCTSTR lpwindowname, DWORD dwstyle, int x, int y, int nwidth, int nheight, HWND hwndparent, HMENU hmenu, HANDLE hinstance, LPVOID lpparam ); // wskaźnik na nazwę zarejestrowanej klasy // wskaźnik na tytuł okna // styl okna // współrzędna x lewego górnego rogu okna // współrzędna y lewego górnego rogu okna // szerokość okna // wysokość okna // uchwyt okna nadrzędnego // uchwyt do menu // uchwyt instancji aplikacji // wskaźnik na dane dotyczące tworzenia okna 4. Funkcja obsługi okna Z punktu widzenia programu głównego działanie aplikacji polega na wykonywaniu pętli while, zawierającej wywołania funkcji GetMessage, TranslateMessage i DispatchMessage, które zapewniają przejmowanie meldunków i przekazywanie ich do funkcji obsługi okna. Schemat funkcji obsługi okna wygląda następująco: switch (message) { case......// zaprogramowane reakcje na poszczególne meldunki case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, message, wparam, lparam); } return 0; 2

W odpowiedzi na meldunek WM_DESTROY należy wywołać funkcję PostQuitMessage, wysyłającą meldunek WM_QUIT, który przerywa pętlę obsługi zdarzeń w programie głównym. Gdyby pominąć PostQuitMessage, to okno główne wprawdzie normalnie się zamknie, ale z formalnego punktu widzenia program nie zakończy pracy, a jego kod będzie dalej zaśmiecać pamięć operacyjną. Funkcja DefWindowProc realizuje standardową, minimalną obsługę wszystkich możliwych meldunków. Jeżeli nie obsługujemy meldunku we własnym zakresie, to musimy przekazać to zadanie funkcji DefWindowProc. 5. Najprostszy dialog z użytkownikiem W systemie Windows najprostszym, standardowym narzędziem do prowadzenia dialogów jest funkcja MessageBox. Otwiera ona okno dialogowe, zawierające tekst komunikatu i przynajmniej jeden przycisk: int MessageBox(HWND hwnd, LPCTSTR lptext, LPCTSTR lpcaption, UINT utype); Parametr hwnd to uchwyt okna, z którego funkcja MessageBox jest wywoływana. Natomiast utype określa wygląd okna. W systemie Windows istnieje wiele predefiniowanych stylów może to być np. MB_YESNO, który powoduje utworzenie okna z przyciskami Tak i Nie. W zależności od wybranego przycisku funkcja MessageBox zwraca wówczas wartość IDYES lub IDNO. 6. Tworzenie menu Najlepszym miejscem na utworzenie menu jest obsługa meldunku WM_CREATE. Do tworzenia menu służy bezparametrowa funkcja CreateMenu. Tworzy ona nowe, pierwotnie puste menu i dostarcza jego uchwyt: HMENU CreateMenu(); Przypisanie menu do okna realizuje funkcja SetMenu: BOOL SetMenu(HWND Okno, HMENU Menu); Przypisanie menu do okna nie powoduje automatycznie jego pojawienia się na ekranie. Trzeba tego zażądać wywołaniem procedury DrawMenuBar: void DrawMenuBar(HWND Okno); Wywołanie funkcji DrawMenuBar powinno nastąpić dopiero po nadaniu menu jego ostatecznej postaci. Windows pozwala dynamicznie dopisywać i kasować opcje w menu. Najprostszym narzędziem do modyfikacji menu jest funkcja AppendMenu: BOOL AppendMenu(HMENU Menu, UINT Flagi, UINT ID_opcji, LPCSTR Zawartosc); Parametr Flagi określa typ i początkowy wygląd nowej opcji. Najbardziej typowe stałe używane w tym przypadku to MF_STRING zwykły tekst i MF_SEPARATOR cienka pozioma linia, używana do oddzielania opcji. Wybranie opcji menu powoduje wysłanie meldunku WM_COMMAND. Informację o tym, którą z opcji wybrano, zawiera parametr wparam zostaje w nim umieszczona liczba podana jako ID_opcji w wywołaniu funkcji AppendMenu. Jeżeli opcja menu ma reprezentować nie polecenie, ale podmenu, to przy jej włączaniu do menu parametr Flagi musi zawierać składnik MF_POPUP. Zmienia się wówczas również interpretacja parametru ID_opcji. Nie reprezentuje on tutaj kodu polecenia, ale uchwyt menu. 3

7. Operacje graficzne Za operacje graficzne odpowiada w systemie Windows tzw. interfejs urządzeń graficznych (Graphics Device Interface), w skrócie GDI. Fundamentalnym elementem GDI jest tzw. kontekst urządzenia (device context), w skrócie DC. Kontekst urządzenia jest odpowiednią strukturą danych, opisującą właściwości urządzenia wyjściowego. Uchwyt kontekstu urządzenia można uzyskać funkcją GetDC: HDC GetDC(HWND hwnd); Uzyskany kontekst urządzenia należy zwolnić przed przekazaniem sterowania do Windows, np. przed opuszczeniem funkcji okna. Służy do tego funkcja ReleaseDC: int ReleaseDC(HWND hwnd, HDC hdc); Kontekst zawiera zawsze jedno aktywne pióro (definiujące sposób kreślenia linii i obrysów figur) oraz jeden pędzel (służący do wypełniania figur i obszarów). W systemie Windows dostępnych jest wiele standardowych funkcji realizujących operacje graficzne. Najczęściej używane funkcje to: GetStockObject CreatePen wybór jednego ze standardowych przyborów malujących, stworzenie niestandardowego pióra, CreateSolidBrush stworzenie niestandardowego pędzla, SelectObject wybór obiektu do użytku, MoveToEx przesunięcie kursora, SetPixel LineTo Polyline PolyBezier Rectangle Polygon FloodFill Ellipse Arc RoundRect Pie Chord narysowanie punktu, narysowanie linii, narysowanie wielu połączonych linii prostych, narysowanie krzywej sklejanej Béziera narysowanie wypełnionego prostokąta, narysowanie wypełnionego wielokąta wypełnienie obszaru, narysowanie elipsy, narysowanie linii eliptycznej, narysowanie wypełnionego prostokąta z zaokrąglonymi rogami, wypełniona część elipsy, wyglądająca jak kawałek tortu, wypełniony obszar ograniczony linią eliptyczną z połączonymi końcami UWAGA: Należy zawsze kasować przybory graficzne (funkcją DeleteObject), gdy przestają one być potrzebne! Wszystkie operacje graficzne powinny przebiegać zgodnie z poniższym schematem: pobranie kontekstu urządzenia, stworzenie przyboru graficznego, czyli pędzla lub pióra (ewentualnie pobranie go ze zbioru przyborów standardowych), wybór przyboru do użycia, właściwe operacje graficzne (np. rysowanie linii itp.), skasowanie przyboru graficznego, zwolnienie kontekstu urządzenia. 4

W wywołaniach niektórych funkcji graficznych należy podać numer koloru logicznego, zależnego od aktualnego trybu graficznego i stosowanej palety. Numer koloru logicznego odpowiadający wybranej kombinacji trzech barw podstawowych (czerwonej, zielonej i niebieskiej) podaje makro RGB: COLORREF RGB(BYTE bred, BYTE bgreen, BYTE bblue); W wielu przypadkach funkcje graficzne wykorzystują argumenty następujących typów: POINT struktura zawierająca dwie liczby całkowite x i y, RECT struktura zawierająca pola left, top, right, bottom. W praktyce operacje graficzne powinny znajdować się w obrębie kodu obsługującego meldunek WM_PAINT. Umożliwia to aktualizowanie zawartości okna np. po chwilowym przesłonięciu przez inne okno, co normalnie powoduje zniknięcie narysowanych obiektów. Meldunek WM_PAINT nie wykorzystuje parametrów wparam i lparam. Dane związane z tym meldunkiem zawarte są w specjalnym rekordzie typu PAINTSTRUCT: typedef struct tagpaintstruct { HDC hdc; BOOL ferase; RECT rcpaint; BOOL frestore; BOOL fincupdate; BYTE rgbreserved[32]; } PAINTSTRUCT; Pole hdc jest uchwytem kontekstu urządzenia dla okna, które oczekuje na aktualizację. Pole ferase wskazuje, czy zostało zaktualizowane tło. Natomiast rcpaint zawiera skrajne współrzędne wycinka, który należy aktualizować (nie zawsze trzeba przemalować całe okno). Powyższa struktura jest przekazywana funkcji okna za pomocą standardowej funkcji BeginPaint, która powinna rozpoczynać obsługę meldunku WM_PAINT. Na końcu obsługi tego meldunku powinno znajdować się wywołanie procedury EndPaint. Oto schematy wywołań: HDC BeginPaint(HWND hwnd, LPPAINTSTRUCT lppaint); BOOL EndPaint(HWND hwnd, CONST PAINTSTRUCT *lppaint ); Obowiązkowy szkielet obsługi meldunku WM_PAINT wygląda następująco: PAINTSTRUCT ps;... case WM_PAINT: hdc = BeginPaint(hWnd, &ps); // operacje graficzne z udziałem GDI} EndPaint(hWnd, &ps); break;... Wysłanie meldunku WM_PAINT (a tym samym odświeżenie zawartości okna) można wymusić programowo wywołując procedurę InvalidateRect: void InvalidateRect(HWND Okno, CONST RECT FAR* Prostokat, BOOL Kasowanie_tla); 5

Wartość NULL parametru Prostokat oznacza żądanie odświeżenia całego okna. 8. GDI+ W systemie Windows XP wprowadzono rozszerzone możliwości obsługi grafiki dwuwymiarowej, określane mianem GDI Plus. Aby móc korzystać z dodatkowych funkcji, należy włączyć do kodu plik nagłówkowy <gdiplus.h> oraz bibliotekę gdiplus.lib, a w programie głównym umieścić następujące wywołanie: GdiplusStartup(&gdiplusToken, &gdiplusparametry, NULL); gdzie gdiplusparametry to zmienna wejściowa typu GdiplusStartupInput (automatycznie wypełniana przez konstruktor odpowiednimi wartościami domyślnymi), natomiast gdiplustoken to wartość wyjściowa typu ULONG_PTR. Jest ona potrzebna do wyłączenia GDI+, które realizowane jest na końcu programu głównego poprzez wywołanie: GdiplusShutdown(gdiplusToken); Ważniejsze typy wykorzystywane w GDI+ to Point klasa zawierająca dwie liczby całkowite X i Y, PointF klasa zawierająca dwie liczby rzeczywiste X i Y, Rect klasa zawierająca liczby całkowite X, Y, Width, Height. Podstawę działania biblioteki GDI+ stanowi obiekt Graphics, tworzony na podstawie aktualnego kontekstu: Graphics::Graphics (HDC kontekst) Obiekt ten oferuje metody będące odpowiednikami funkcji graficznych zwykłego GDI. Do określania koloru służy klasa Color, która działa w systemie ARGB, umożliwiając podanie poziomu przeźroczystości A (jest to tzw. kanał alfa), przy czym 0 oznacza całkowitą przeźroczystość, a 255 pełne krycie. Podstawowe przybory graficzne zostały zawarte w klasach Pen i SolidBrush. Pióro tworzymy podając kolor i szerokość pisaka, w przypadku zwykłego pędzla wystarczy sam kolor, np.: Pen zielonepioro(color::color(255,0,255,0), 3); SolidBrush czerwonypedzel(color::color(255,255,0,0)); W przeciwieństwie do kontekstu GDI obiekt Graphics przy operacjach graficznych nie wymaga ustawiania w jego strukturze żadnych parametrów typu Pen czy Brush, a używa się ich bezpośrednio w wywoływanych metodach rysujących. W GDI+ nazwy metod rysowania konturów zaczynają się od przedrostka Draw (Pen określa kolor), natomiast metody wypełniania prymitywów zaczynają się od przedrostka Fill (sposób wypełniania określa jedna z odmian obiektu Brush). Podstawowe obiekty rysunkowe, jakie udostępnia Graphics, są takie same jak w GDI. Nowymi metodami są DrawCurve oraz Draw/FillClosedCurve, które tworzą tzw. cardinal splines, czyli krzywe złożone z dowolnej liczby punktów. W GDI+ mamy do dyspozycji tzw. ścieżki, będące niezależnymi obiektami typu GraphicsPath. Po utworzeniu pustego obiektu ścieżki można dodawać kolejne elementy poprzez metody identyczne z wymienionymi powyżej, z tą różnicą, że zamiast przedrostka 6

Draw/Fill występuje Add, np. dodanie odcinka wykonuje metoda AddLine. Zawartość obiektu ścieżki można wyzerować metodą Reset(). Po utworzeniu ścieżki można skorzystać np. następujących metod obiektu Graphics: DrawPath(const Pen *pioro, GraphicsPath *sciezka); FillPath(const Brush *pedzel, const GraphicsPath *sciezka); Korzystając ze ścieżki można z kolei utworzyć obiekt klasy Region: Region(const GraphicsPath *sciezka); Jedną z bardziej przydatnych metod klasy Region jest metoda IsVisible, która pozwala sprawdzić, czy zadany punkt leży wewnątrz regionu BOOL IsVisible(INT x, INT y, const Graphics *g); Regionu można użyć do tzw. przycinania obrazu, czyli zdefiniowania obszaru, poza którym obraz nie będzie widoczny. W tym celu używamy odpowiedniej metody obiektu Graphics: SetClip(const Region *region); Biblioteka GDI+ umożliwia zdefiniowanie tzw. macierzy przekształcenia. Służy do tego klasa Matrix, która zawiera takie metody, jak np. Translate, która wypełnia macierz parametrami przesunięcia: Translate(REAL offsetx, REAL offsety); Zdefiniowane w macierzy przekształcenie można zastosować do innego obiektu, np. do ścieżki, wywołując metodę Transform: Transform(const Matrix *macierz); LITERATURA 1. Charles Petzold: Programowanie Windows. Wydawnictwo RM, Warszawa 1999. 2. Maciej Smiatacz, Marcin Różański: GDI+. Nowe możliwości podsystemu graficznego Microsoft Windows. VII Konferencja Informatyki Stosowanej, Chełm 2008, s. 283-293. Przykładowe zadanie Zadanie przeznaczone do wykonania w trakcie zajęć będzie obejmować następujące zagadnienia: 1. rysowanie wypełnionych wielokątów, a więc użycie np. funkcji Polygon i CreateSolidBrush, 2. rysowanie linii krzywych, np. przy użyciu funkcji Arc lub PolyBezier, 3. obsługa podstawowych komunikatów dotyczących działania myszy, takich jak WM_LBUTTONDOWN czy WM_MOUSEMOVE. 7