Rozmiary bitmapy
Adam Boduch
Wbrew pozorom naprawdę nie jest to trudne.
Naprawdę, wystarczy tylko jedna procedura. Potrzebna będzie
tylko klasa TCanvas i procedura StretchDraw. Gotowy program możesz
ściągnąć tutaj.
Jest tam przykładowy obrazek oraz kod źródłowy programu.
Na formie umieściłem komponent Image, który służy
jedynie do pokazania podglądu obrazka, który będziemy edytować.
Dwa komponenty TEdit, które przechowują nowe rozmiary
obrazka.
Cała procedura konwersji rozmiarów przedstawia
się następująco:
procedure TMainForm.spdConvertClick(Sender: TObject);
var
BitmapSrc, BitmapDst : TBitmap;
nR : TRect;
begin
BitmapSrc := TBitmap.Create; // stworz bitmape - stara - zrodlowa
BitmapDst := TBitmap.Create; // nowa bitmapa - ze zmienionymi rozmiarami
try
BitmapSrc.Assign(Image.Picture.Graphic); // pobierz obraz z komponentu
{ pobieramy rozmiary wpisane przez uzytkownika }
BitmapDst.Width := StrToInt(edtWidth.Text);
BitmapDst.Height := StrToInt(edtHeight.Text);
{ tutaj do zmiennej typu TRect zapisujemy nowe rozmiary }
nR := Rect(0, 0, StrToInt(edtWidth.Text), StrToInt(edtHeight.Text));
BitmapDst.Canvas.StretchDraw(nR, BitmapSrc); // konwert do nowych rozmiarow
if SaveDialog.Execute then
BitmapDst.SaveToFile(SaveDialog.FileName); // zapisanie bitmapy do pliku
finally
{ zwolnienie pamieci }
BitmapSrc.Free;
BitmapDst.Free;
end;
end;
Wszystko co najważniejsze opisane jest w
komentarzu. Jak mówiłem nie jest to nic nadzwyczajnego.