Mothership Napisano Październik 5, 2018 Autor Zgłoś Udostępnij Napisano Październik 5, 2018 1. Jak zapisać obraz z kontekstu, tzn. cos sobie narysowałem na ekranie (GDI) i jak teraz zapisać to do pliku (dajmy na to BMP)? 2. Czy istnieje komunikat, który informuje, ze obraz "wychodzi" poza obszar malowania (w przypadku standardowych ustawieniach strktury PAINTSTRUCT - poza okno)? 3. Jak zachować obraz, który namalowałem metodą GetDC() tak by po ponownym odrysowaniu okna (np. po zminimalizowaniu) by znow widoczny - tak jak bym to malował w obsłudze komunikatów WM_PAINT? Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Omega Napisano Październik 5, 2018 Zgłoś Udostępnij Napisano Październik 5, 2018 1. Aby cos wogole rysowac po kontekscie, wczesniej musi byc do niego przypisana mapa (SelectObject()). Ona ma wyznaczona wysokosc i szerokosc obrazka i tylko wzgledem tych rozmiarow bedzie widoczne jakiekolwiek rysowanie. Aby zapisac ta mape do pliku nie pobiera sie nic z tego kontekstu tylko bezposrednio z uchwytu tej mapy. A wykonuje sie to za pomoca funkcji GetObject(HBitmap, sizeof(DibSection), DibSection). Z tych informacji mozna juz zainicjowac BitmapInfoHeader, rozmiar mapy DIB itd. I z tych informacji (oczywiscie trzeba tez zainicjowac BITMAPFILEHEADER) mozna juz zapisac mape. Funkcja GetDIBits zwraca nam dane mapy. 2. Nie ma takiego komunikatu. Ale chyba jezeli znasz rozmiar klienta (GetClientRect) to chyba bedziesz wiedzial czy rysujesz poza obszar. 3. Nie odrysowuj nigdzie indziej jak w komunikacie WM_PAINT, poprzez BeginPaint i EndPaint. Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.