Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Qualität tImage (https://www.delphipraxis.net/183219-qualitaet-timage.html)

Perlsau 22. Dez 2014 11:26

AW: Qualität tImage
 
Die Syntax der Procedure steht doch in der Online-Hilfe, auf die Günther verlinkt hat. Der folgende Befehl vergrößert das OriginalBitMap um den Faktor 2 und liefert das Ergebnis in ResultBitMap zurück:

Delphi-Quellcode:
ScaleImage(OriginalBitMap, ResultBitMap,2);

Der schöne Günther 22. Dez 2014 11:49

AW: Qualität tImage
 
Oder auch hier nochmal:

Delphi-Quellcode:
unit Unit6;

interface uses Vcl.ExtCtrls, Vcl.Graphics;

type
   TImageHelper = class helper for Vcl.ExtCtrls.TImage
      public procedure makePretty(const withOriginalImage: TGraphic);
   end;

implementation uses Vcl.GraphUtil;

{ TImageHelper }

procedure TImageHelper.makePretty(const withOriginalImage: TGraphic);
var
   srcBitmap: TBitmap; // Enthölt das Originalbild
   dstBitmap: TBitmap; // Speziell für die aktuellen Abmessungen
begin
   srcBitmap := TBitmap.Create();
   try
      srcBitmap.Width := withOriginalImage.Width;
      srcBitmap.Height := withOriginalImage.Height;
      srcBitmap.Canvas.Draw(0, 0, withOriginalImage);

      dstBitmap := TBitmap.Create();
      try
         dstBitmap.Width := self.Width;
         dstBitmap.Height := self.Height;

         // Skalierte Version in neues Bitmap zeichnen
         if self.Height < self.Width then
            Vcl.GraphUtil.ScaleImage(
               srcBitmap,
               dstBitmap,
               self.Height / srcBitmap.Height
            )
         else
            Vcl.GraphUtil.ScaleImage(
               srcBitmap,
               dstBitmap,
               self.Width / srcBitmap.Width
            )
         ;

         // imageComponent mit neuem Bild bestücken
         self.Picture.Bitmap := dstBitmap;
      finally
         dstBitmap.Free();
      end;
   finally
      srcBitmap.Free();
   end;
end;

end.
Du musst dir natürlich noch eine Kopie des Originalbildes vorhalten um es dann in
Delphi-Quellcode:
makePretty(..)
reinstecken zu können. Dann kannst du, wenn du es brauchst, einfach sagen
Delphi-Quellcode:
image1.makePretty(originalImage)
.

striderx 22. Dez 2014 17:20

AW: Qualität tImage
 
Liste der Anhänge anzeigen (Anzahl: 1)
So, jetzt habe ich endlich ein Beispielbild bekommen.

Das Original ist das JPG-Bild, die Dartstellung im tImage das andere. Der Unterschied ist schon recht krass.

striderx 22. Dez 2014 17:26

AW: Qualität tImage
 
Hallo Günther, vielen Dank für das Code-Beispiel. Ich werde es sobald wie möglich ausprobieren.

/edit:

So, ich habe es mittlerweile ausprobiert, und die Qualitätsverbesserung ist wirklich dramatisch (und das ohne Fremdkomponente).

>>Warum man so etwas in der VCL immer noch von Hand machen (bzw. Fremdkomponenten installlieren) muss ... <<

Dem kann man nur zustimmen.


Vielen Dank für die Hilfe!


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:32 Uhr.
Seite 2 von 2     12   

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