Skocz do zawartości

Skalowanie Bitmap


Recommended Posts

Napisano

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

Napisano

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.

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...