Law Napisano Grudzień 3, 2018 Autor Zgłoś Napisano Grudzień 3, 2018 Spieszę się więc krótką. Mam zmienną typu HBITMAP i jak powiększyć ją? Cytuj
Jarema Napisano Grudzień 3, 2018 Zgłoś Napisano Grudzień 3, 2018 Musisz pobrać najpierw jej rozmiar. Potem stworzyć drugą bitmapkę o rozmiarach większych i kopiować odpowiednią ilość linii, algorytm gotowy można znaleźć na pierwszej lepszej stronce jak wpiszesz w wyszukiwarce "skalowanie bitmap". To będzie takie brzydkie powiększanie polecam interpolację, coś o tym wiem z Noname Project . Zakładam że wiesz jak wykonać powyższe czynności, jeśli będziesz potrzebował gotowego przykładu to napisz, ale to dopiero jutro bo muszę się wyspać . Cytuj
Law Napisano Grudzień 3, 2018 Autor Zgłoś Napisano Grudzień 3, 2018 Tu trzeba użyć chyba StretchBlt, ale próbowałem różnych kombinacji i nic. Cytuj
Omega Napisano Grudzień 4, 2018 Zgłoś Napisano Grudzień 4, 2018 StretchBlt jest jednym z mozliwosci jezeli wykorzystujesz uchwyt. Jezeli chcesz dzialac bezposrednio na bitach rysunku to wykorzystaj: StretchDIBits Przyklad na StretchBlt (w delphi): Var mapa:HBITMAP; PS:TPaintStruct; DC:hDC; x,y:integer; //x,y - rozmiar jaki bedzie wyswietlany rzeczywiscie - czyli przeskalowany xo,yo: integer; //xo,yo - rozmiar oryginalny bitmapy ... WM_PAINT:begin beginPaint(Okno,PS); DC:=CreateCompatibleDC(PS.hDC); SelectObject(DC,mapa); StretchBlt(PS.hDC,0,0,x,y,DC,0,0,xo,yo,SRCCOPY); DeleteDC(DC): EndPaint(Okno,PS); end; Dodatkowo mozesz wykorzystac funkcje SetStretchBltMode, zktorej wykorzystujac odpowiednie stale mozesz sprawdzic z ktora najladniej wychodzi. Powyzsza metoda moze byc wykorzystana do bezposredniej zmiany rozmiaru mapy - przedtawilem to na przykladzie pokazania bezposredniego. Chociarz takie kombajny jak photoshop wykorzystuja wlasne algorytmy i wyglada to miejwiecej tak jak opisuje Nicon. Dodatkowo ten program ma wybor zmiany rozmiaru obrazka. Nie pamietam jak to dokladnie sie nazywa, ale chyba metoda sasiadujaca, dwuszescienna i dwuliniowa. Cytuj
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.