GDI

Zadanie 1 - Paint

Zaimplementuj aplikację, która pozwala rysować przy pomocy myszki po oknie głównym. Rysowanie odbywa się po wciśnięciu lewego klawisza myszy domyślnym piórem. Dodaj ro programu możliwość zmiany koloru posaka oraz zmiany jego grubości.

Przydatne funkcje

funkcja GetDC uzyskuje uchwyt do DC (device context)

funkcja ReleaseDC() zamyka DC

funkcja MoveToEx przesuwa pióro do wskazanej pozycji

funkcja LineTo rysuje linię do wskazanej pozycji

komunikaty WM_LBUTTONDOWN, WM_LBUTTONUP, WM_MOUSEMOVE wołane w czasie zdarzeń związanych z myszą (wciśnięcie lewego klawisz, zwolnienie lewego klawisza i ruch myszą)

finckja ChooseColor() z biblioteki Commdlg.h tworzy okno dialogowe umożliwiające wybrać kolor.

Zadanie 2 - Najeźdzcy z kosmosu

Zaimplementuj grę Space Invaders. Gracz porusza za pomocą klawiszy pojazdem kosmicznym w lewo i w prawo oraz oddaje strzał po wciśnięciu spacji. Wrogie statki kospiczne poruszają się automatycznie i w losowych odstępachch czasu oddają strzał do pojazdu gracza. Każdy zestrelony statek wroga zwiększa wartość punktów wyświetlanych na liczniku u dołu ekranu. Sprity (statek gracza i wrogie statki) zrealizowane są za pomocą bitmap.

Przydatne funkcje

Device Context

GetDC - uzyskanie uchwytu do DC (device context)

ReleaseDC

BeginPaint - przygotowanie okna do rysowania dla komunikatu WM_PAINT

EndPaint

Obiekty GDI

GetObject - uzuskuje informacje na temat obiektu DC

SelectObject - ustawia wzkazany obiekt w kontekście DC

DeleteObject - niszczy obiekt

Pen

CreatePen - długopis/pisak

SetDCPenColor

Brush

CreateSolidBrush - pędzel

CreateHatchBrush - pędzel z wzorem

Font

CreateFont - font

TextOut - wypisuje tekst w zadanej pozycji

DrawText - wypisuje tekst we wskazanej pozycji

SetTextColor - ustawia kolor tekstu

Bitmap

LoadBitmap - wczytanie bitmapy

CreateCompatibleCD - utworzenie zgodnego kontekstu DC

BitBlt - kopiowanie zawartości kontekstu DC

Kształty i rysowanie

SetPixel - rysywoanie pojedynczego piksela

MoveToEx - przesunięcie pisaka

LineTo - narysowanie linii

Kształty wypełnione

Rectangle - prostokąt

Elipse - elipsa

SetBkColor - kolor tła

Timer

SetTimer - uruchomienie stopera

komunikat WM_TIMER wysyłany po określonym czasie od uruchomienia czasomierza

KillTimer - zatrzymuje (zabija) stoper

Sterowanie

komunikaty związane z obsługą klawiszy WM_KEYDOWN, WM_KEYUP