Mit dem TWicImage hatte ich es schon versucht, war aber zu dumm dafür. Deine flapsige Antwort ließ es so trivial klingen dass ich es nochmal versuchen musste. Und ich glaube, jetzt habe ich's:
Delphi-Quellcode:
uses Winapi.Wincodec;
procedure TForm5.recalcImageNew();
const
interpolationMode: WICBitmapInterpolationMode = WICBitmapInterpolationModeFant;
var
wicImage: TWICImage;
bitmapScaler: IWicBitmapScaler;
aspectRatio: Double;
newSize: TPoint;
begin
wicImage := TWICImage.Create();
wicImage.ImageFormat := TWICImageFormat.wifPng;
wicImage.LoadFromFile('
Zeichnung1.png');
aspectRatio := 1.0;
if image1.Width < image1.Height
then
aspectRatio := image1.Width / wicImage.Width
else
aspectRatio := image1.Height / wicImage.Height;
newSize.X := Round( wicImage.Width * aspectRatio);
newSize.Y := Round( wicImage.Height * aspectRatio);
wicImage.ImagingFactory.CreateBitmapScaler(bitmapScaler);
bitmapScaler.Initialize(wicImage.Handle, newSize.X, newSize.Y, interpolationMode);
wicImage.Handle := IWICBitmap(bitmapScaler);
image1.Picture.Assign(wicImage);
end;
Das sieht gut aus und
flackert nicht. Vielen Dank für die Hilfe und den seelischen Beistand.
Warum aber der obige Quellcode so
merkwürdige Ergebnisse produziert habe ich nicht im geringsten verstanden