Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Graphics32 / TBitmap32 -> Verkleinern mit "StretchTransfer& (https://www.delphipraxis.net/28081-graphics32-tbitmap32-verkleinern-mit-stretchtransfer-amp.html)

Wheelie 19. Aug 2004 13:14


Graphics32 / TBitmap32 -> Verkleinern mit "StretchTr
 
Ich möchte Bitmaps geglättet verkleinern und nutze dafür die Graphics32 Lib. Hier meine beisherigen Ergebnisse:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var a, b: TBitmap32;
    drect, srect: TRect;
begin
  a := TBitmap32.Create;
  b := TBitmap32.Create;

  b.SetSize(200, 100);
  if OpenDialog1.Execute then a.LoadFromFile(OpenDialog1.FileName);

  dRect.Left := 0;
  dRect.Top := 0;
  dRect.Right := 200;
  dRect.Bottom := 100;

  sRect.Left := 0;
  sRect.Top := 0;
  sRect.Right := a.Width;
  sRect.Bottom := a.Height;

  StretchTransfer(b, drect, srect, a, srect, sfLanczos, dmOpaque, nil);
  b.SaveToFile('d:\new.bmp');
end;
Jetzt will ich wissen, was ich für ein Rect für DstClip angebe???
StretchTransfer wurde in der Hilfe von Graphics32 folgendermaßen deklariert:

Delphi-Quellcode:
procedure StretchTransfer(
  Dst: TBitmap32;
  DstRect: TRect;
  DstClip: TRect;
  Src: TBitmap32;
  SrcRect: TRect;
  StretchFilter: TStretchFilter;
  CombineOp: TDrawMode;
  CombineCallBack: TPixelCombineEvent = nil);

dizzy 19. Aug 2004 14:13

Re: Graphics32 / TBitmap32 -> Verkleinern mit "Stret
 
ich würde dRect nehmen, da du das Bild ja genau passend in das Ziel kopierst. Wenn du aber gleichzeitig etwas wegschneiden wolltest, dann würde man DstClip anders wählen, oder denn DstRect größer wäre als das Ziel selber, dann müsste man glaube ich selber drauf achten, dass DstClip nur so groß ist wie das Ziel.

Fazi: DstRect gibt an auf welche Zielgröße das Bild gebracht werden soll, und DstClip dient zum ausschneiden. Nix schneiden mit DstRect = DstClip

...ich hoffe das war a) richtig, und b) verständlich ;)

gruss,
dizzy

\\edit: Den Kram mit den Rects selber erstellen kannst du dir sparen: TBitmap32.BoundsRect ;)

Wheelie 19. Aug 2004 14:52

Re: Graphics32 / TBitmap32 -> Verkleinern mit "Stret
 
Super :-D ... und das mit den Rects hat echt genervt :oops:


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:53 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz