Rysowanie bitmap, pomocnicze konteksty urządzenia
Wersja B
Przenoszenie bitmapy przy pomocy myszy
- Zawartość okna roboczego programu:
- tło złożone z następujących elementów
- jednolite niebieskie tło
- bitmapa wczytana z pliku rysowana tylko w obszarze elipsy
wpisanej w prostokąt obszaru roboczego okna
- bitmapa skalowana do rozmiarów części roboczej okna lub rysowana
wielokrotnie obok siebie w swoim rozmiarze tak, aby całkowicie
wypełnić elipsę (zmiana sposobu wyświetlania bitmapy przy pomocy
prawego przycisku myszy)
- przed pierwszym wczytaniem bitmapy z pliku elipsa powinna
być wypełniona zielonym kolorem
- 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
- bitmapa rysowana normalnie lub w zwierciadlanym odbiciu względem
pionowej osi (zmiana prawym przyciskiem myszy)
- Działanie programu
- naciśnięcie lewego przycisku myszy na bitmapie tła - wyświetlenie
standardowego okna dialogowego wyboru pliku
- domyślnie wybrany filtr plików *.bmp
- wybrana bitmapa powinna być rysowana w tle okna zgodnie z
powyższymi wytycznymi (do wczytania bitmapy z pliku można wykorzystać
funkcję LoadImage())
- naciśnięcie prawego przycisku myszy na bitmapie tła - zmiana sposobu
jej wyświetlania (skalowanie do rozmiarów okna <-> wielokrotne
rysowanie obok siebie)
- naciśnięcie prawego przycisku myszy na bitmapie z zasobów programu
- zmiana sposobu jej wyświetlania (normalnie <-> odbicie względem
pionowej osi) - pozycja bitmapy nie powinna ulec zmianie
- 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 działać prawidłowo
także dla bitmapy rysowanej w odbiciu
- 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())