Rysowanie bitmap, pomocnicze konteksty urządzenia
Wersja C
Przenoszenie bitmapy przy pomocy myszy
- Zawartość okna roboczego programu:
- tło wypełnione gładkim przejściem od koloru żółtego do niebieskiego
- zawsze (niezależnie od rozmiaru okna) żółty kolor powinien
być w lewym brzegu, niebieski w prawym, pomiędzy nimi powinno
być gładkie przejście
- bitmapa (zawarta w dołączonym do zadania pliku zip)
rysowana z wykorzystaniem dołączonej maski tak, aby zapewnić przezroczystość
niektórych części bitmapy (po prawidłowym narysowaniu bitmapa powinna
przedstawiać kwadrat i 2 odwrócone litery L)
- maskę bitmapy można modyfikować, ale powyższy efekt przezroczystości
wskazanych części musi być zachowany
- bitmapę i maskę dołączyć do zasobów programu
- w czterech rogach bitmapy oraz w połowach czterech brzegów
kwadraty o boku 7 pikseli umożliwiające zmianę rozmiaru bitmapu
- Działanie programu
- naciśnięcie lewego przycisku myszy na jednym z 8 kwadratów wokół
bitmapy - rozpoczęcie zmiany rozmiaru bitmapu (stosownie do pozycji
kwadratu, np. lewy górny modyfikuje położenie lewego górnego rogu
bitmapy, prawy na środku brzegu modyfikuje położenie prawego brzegu
bitmapy)
- przesuwanie myszy z naciśniętym lewym przyciskiem - kontynuacja
zmiany rozmiaru
- puszczenie lewego przycisku myszy - zakończenie zmiany rozmiaru
(nowy rozmiar powinien być stosowany do wszystkich operacji
graficznych aż do chwili następnej zmiany)
- naciśnięcie lewego przycisku myszy na nieprzezroczystym punkcie
bitmapy rysowanej z użyciem maski - rozpoczęcie przenoszenia tej
bitmapy na oknie
- kontynuacja przenoszenia aż do puszczenia lewego przycisku
myszy (podczas przenoszenia bitmapa powinna zawsze płynnie podążać
za kursorem myszy)
- po zakończeniu przenoszenia nowa pozycja bitmapy powinna zostać
zapamiętana dla poprawnego odrysowania okna
- rozpoczęcie i kontynuacja przenoszenia powinny zawsze działać
na aktualnym rozmiarze bitmapy
- poprawnie obsłużyć puszczenie lewego przycisku myszy poza obszarem
okna
- wyeliminować efekt mrugania podczas przenoszenia bitmapy, odrysowywania
i zmiany rozmiaru okna (WM_ERASEBKGND)
- zadbać o niszczenie tworzonych kontekstów i bitmap
- program musi działać poprawnie także w systemach Win9x
(nie używać funkcji dostępnych tylko w WinNT, w szczególności
MaskBlt())