Skocz do zawartości

Skalowanie Bitmap


Law

Recommended Posts

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ć ;).

Link do komentarza
Udostępnij na innych stronach

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.

Link do komentarza
Udostępnij na innych stronach

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gość
Odpowiedz...

×   Wkleiłeś zawartość bez formatowania.   Usuń formatowanie

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Utwórz nowe...