Ich ändere die Größe eines Bitmaps, dabei möchte ich die Seitenverhältnisse beibehalten. Wenn das Bild dann verkleinert ist möchte ich es in die Mitte des Canvas setzen, da funktioniert aber nicht richtig. Ich poste hier mal den Quellcode, ich such nämlich schon länger den Fehler.
Delphi-Quellcode:
.
.
.
var
iPicHeight, iPicWidth: integer;
eThumbHeight, eThumbWidth: TEdit;
Bmp: TBitmap;
Image: TImage;
.
.
.
Image.Picture.LoadFromFile(...);
Bmp.Assign(nil);
Bmp.Height := StrToInt(eThumbHeight.Text);
Bmp.Width := StrToInt(eThumbWidth.Text);
iPicHeight := Bmp.Height;
iPicWidth := Bmp.Width;
if Image.Picture.Height > Image.Picture.Width then
iPicWidth := round(Bmp.Width * (Image.Picture.Width / Image.Picture.Height))
else
iPicHeight := round(Bmp.Height * (Image.Picture.Height / Image.Picture.Width));
Bmp.Canvas.StretchDraw(Rect((Bmp.Width-iPicWidth) div 2, (Bmp.Height-iPicHeight) div 2, iPicWidth, iPicHeight), Image.Picture.Graphic);
.
.
.
Die Bilder sehen meißt so aus das sie ein bisschen weiter links, bzw ein bisschen weiter oben sind. Sie sind aber nie in der Mitte.
Michael N.