Einzelnen Beitrag anzeigen

Der schöne Günther

Registriert seit: 6. Mär 2013
6.111 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Konvertieren eines TBitmap zu einem TPngImage tut später komische Dinge

  Alt 9. Dez 2014, 10:03
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

Geändert von Der schöne Günther ( 9. Dez 2014 um 10:07 Uhr) Grund: Fehler behoben. Selbst ein Genie wie ich macht welche.
  Mit Zitat antworten Zitat