Thema: Delphi Bmp verkleinern

Einzelnen Beitrag anzeigen

Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Bmp verkleinern

  Alt 31. Jan 2008, 08:44
Hallo,

hier ein Beispiel für die Umsetzung mit der Prozentangabe. Dazu habe ich in dem beispiel ein 2. Bitmap eingeführt.
Die Resourcenschutzblöcke (try-finally) solltest du bei dir ebenfalls ergänzen, wie in folgendem Code zu sehen ist.

Delphi-Quellcode:
var
  // ...
  bmp, bmp_small: TBitmap;
  // ...
begin
  // ...

  bmp := TBitmap.Create;
  try
    bmp.Width := dateien[0];
    bmp.Height := dateien[1];

    DCDesk := GetWindowDC(GetDesktopWindow);

    BitBlt(bmp.Canvas.Handle, 0, 0, dateien[0], dateien[1],
           DCDesk, dateien[2], dateien[3], SRCCOPY);

    bmp.SaveToFile('ScreenShot.bmp');

    // ab hier ist es neu
    bmp_small := TBitMap.Create;
    try
      bmp_small.Height := round(dateien[4] * dateien[1] / 100);
      bmp_small.Width := round(dateien[4] * dateien[0] / 100);
      bmp_small.Canvas.StretchDraw(Rect(0, 0, bmp_small.Width, bmp_small.Height), bmp);

      bmp_small.SaveToFile('ScreenShot_small.bmp');
    finally
      FreeAndNil(bmp_small);
    end;
    ReleaseDC(GetDesktopWindow, DCDesk);
  finally
    FreeAndNil(bmp);
  end;
end;
Grüße
  Mit Zitat antworten Zitat