Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Bilddatei verkleinert in ein TImage laden (https://www.delphipraxis.net/100354-bilddatei-verkleinert-ein-timage-laden.html)

Christian18 27. Sep 2007 00:33


Bilddatei verkleinert in ein TImage laden
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

ich habe eine Bilddatei mit einer Variablen Größe! Diese Bilddatei kann Hochformat, Querformat oder ein Quadrat sein.

Beispiel:

Hochformat:

Filename : Katze.jpg
Width : 50 Pixel
Height : 100 Pixel

Querformat:

Filename : Maus.jpg
Width : 100 Pixel
Height : 50 Pixel

Quadrat:

Filename : Hund.jpg
Width : 100 Pixel
Height : 100 Pixel

Width und Height können aber auch andere Werte haben. Wie schon gesagt, es ist Variabel. Nun will ich diese Bilddatei in ein TImage laden. Das TImage hat eine Feste größe.

Beispiel (TImage):

Hochformat:

Width : 75
Height : 100

Querformat:

Width : 100
Height : 75

Quadrat:

Width : 100
Height : 100

Das sind die Größe, die diese Komponente haben kann. Bis dahin, habe ich gar kein Problem.

Delphi-Quellcode:
// square
if Bitmap.Width = Bitmap.Height then
  begin
    Image.Width:=100;
    Image.Height:=100;  
  end;

// landscape format
if Bitmap.Width > Bitmap.Height then
  begin
    Image.Width:=100;
    Image.Height:=75;
  end;

// portrait format
if Bitmap.Width < Bitmap.Height then
  begin
    Image.Width:=75;
    Image.Height:=100;
  end;
Also das funktioniert schon mal. Nun möchte ich noch zusätzlich die größere Bilddatei in mein Image laden. Viele denken nun bestimmt, dass ist doch ganz einfach. Es gibt ja bei Image Komponenten die Möglichkeit die Eigenschaft Proportional auf True zu setzen. Das kann ich leider nicht verwenden, weil ich zusätzlich noch andere Grafiken in das TImage kopieren möchte. Ich habe dazu mal ein kleines Bild gemalt. Achso, die Eigenschaft Proportional kann ich nicht verwenden, weil die Bilddatei da auf das komplette TImage ausgerichtet wird. Ich möchte meine Bilddatei nicht in ein ganzes TImage laden, sondern nur in einen bestimmten Teil. Der restliche, freie Teil soll mit anderen Grafiken gefüllt werden.

Nun die eigentliche Frage:

Wie kann ich soetwas machen?



Mit freundlichen Grüßen

Christian18

Hador 27. Sep 2007 00:35

Re: Bilddatei verkleinert in ein TImage laden
 
Guck dir mal die StretchDraw-Methode des TBitmap/TCanvas an. Damit kannst du Bilder skaliert kopieren.

Christian18 27. Sep 2007 00:50

Re: Bilddatei verkleinert in ein TImage laden
 
Hallo,

ich denke damit hast du mir geholfen. Ich werde das aber erst morgen probieren. Bin jetzt ein bisschen zu müde dazu.

Also, nochmals vielen danke.

MFG Christian18

Christian18 15. Okt 2007 21:05

Re: Bilddatei verkleinert in ein TImage laden
 
Hallo,

irgendwie habe ich damit doch probleme. Hat jemand vieleicht ein kleines Beispiel?

Whookie 15. Okt 2007 21:32

Re: Bilddatei verkleinert in ein TImage laden
 
Versuch es mal mit sowas

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
Var
  bmp: TBitmap;
begin
  bmp := TBitmap.Create;
  try
    bmp.LoadFromFile('test.bmp');
    Image1.Canvas.StretchDraw(Rect(10,5,bmp.Width, bmp.Height), bmp);
  finally
    bmp.Free;
  end;
end;
Mit StretchDraw kannst du die einkopierte Grafik auch noch verkleinern oder vergößern. Etwa mit:

Delphi-Quellcode:
...
Image1.Canvas.StretchDraw(Rect(10,5,bmp.Width Div 2, bmp.Height Div 2), bmp);
...
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:57 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz