(Gast)
n/a Beiträge
|
Re: Bildgroesse veraendern
10. Mai 2007, 14:27
Hallo,
ich habe ein ähnliches Problem gehabt und es dank dieses Threads dann gelöst. Vielleicht helfen die folgenden Prozeduren auch anderen weiter:
Delphi-Quellcode:
procedure ResizeTImage(const Image: TImage; Width, Height: Integer);
begin
SetStretchBltMode(Image.Picture.Bitmap.Canvas.Handle, STRETCH_HALFTONE);
SetBrushOrgEx(Image.Picture.Bitmap.Canvas.Handle, 0, 0, nil);
StretchBlt(Image.Picture.Bitmap.Canvas.Handle, 0, 0, Width, Height, Image.Picture.Bitmap.Canvas.Handle, 0, 0, Image.Picture.Bitmap.Width, Image.Picture.Bitmap.Height, SRCCOPY);
Image.Picture.Bitmap.Width := Width;
Image.Picture.Bitmap.Height := Height;
end;
procedure ScaledResizeTImage(const Image: TImage; maxWidth, maxHeight: Integer);
var
r: Double;
begin
r := Min(maxWidth/Image.Picture.Bitmap.Width, maxHeight/Image.Picture.Bitmap.Height);
SetStretchBltMode(Image.Picture.Bitmap.Canvas.Handle, STRETCH_HALFTONE);
SetBrushOrgEx(Image.Picture.Bitmap.Canvas.Handle, 0, 0, nil);
StretchBlt(Image.Picture.Bitmap.Canvas.Handle, 0, 0, Round(Image.Picture.Bitmap.Width * r), Round(Image.Picture.Bitmap.Height * r), Image.Picture.Bitmap.Canvas.Handle, 0, 0, Image.Picture.Bitmap.Width, Image.Picture.Bitmap.Height, SRCCOPY);
Image.Picture.Bitmap.Width := Round(Image.Picture.Bitmap.Width * r);
Image.Picture.Bitmap.Height := Round(Image.Picture.Bitmap.Height * r);
end;
Viel Spaß damit und viele Grüße,
peanut.
|
|
Zitat
|