Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Wie kann ich die angezeigte Größe des Images ermitteln? (https://www.delphipraxis.net/170824-wie-kann-ich-die-angezeigte-groesse-des-images-ermitteln.html)

loirad 4. Okt 2012 15:15

Wie kann ich die angezeigte Größe des Images ermitteln?
 
Hallo liebe Community,

ich habe ein TImage, in das mit dem OpenDialog Bilder geladen werden können. Das wird dann auf eine Größe von max. 500*500 Pixel proportional skaliert. (Strech und Proportional=true) Wie kann ich die tatsächlich angezeigte Größe ausgeben (die, die kleiner oder gleich 500*500 ist)?

Liebe Grüße
loirad

Uwe Raabe 4. Okt 2012 15:30

AW: Wie kann ich die angezeigte Größe des Images ermitteln?
 
TImage.Picture.Width und TImage.Picture.Height

loirad 4. Okt 2012 15:34

AW: Wie kann ich die angezeigte Größe des Images ermitteln?
 
Vielen Dank für die Antwort!
Da bekomme ich aber die urspünglichen Werte des Originalbildes, die (in dem Fall) größer als 500*500 sind raus. Ich möchte aber auf das Canvas dieses Bildes in die Mitte was zeichnen!

Bummi 4. Okt 2012 15:42

AW: Wie kann ich die angezeigte Größe des Images ermitteln?
 
Delphi-Quellcode:
Procedure GetFittingHW(OuterW,OuterH:Integer;var InnerW,InnerH:Integer);
var
 vh:Double;
begin
    Assert((OuterW<>0) and (OuterH<>0),'Division durch 0');

    if (InnerW /OuterW) < (InnerH /OuterH) then vh := (InnerH /OuterH)
    else vh := (InnerW /OuterW);

    Assert((vh<>0) ,'Division durch 0');

    InnerW := Round(InnerW/vh);
    InnerH := Round(InnerH/vh);
end;

procedure TForm3.Button1Click(Sender: TObject);
var
 w,h:Integer;
begin
  w := image1.Picture.Width;
  h := image1.Picture.Height;
  GetFittingHW(Image1.Width,image1.Height,w,h);
  Showmessage(Format('Breite: %d Höhe %d',[w,h]));
end;

Uwe Raabe 4. Okt 2012 15:44

AW: Wie kann ich die angezeigte Größe des Images ermitteln?
 
OK, dann hatte ich deine Frage falsch verstanden.

Dafür gibt es leider keine direkt verfügbare Funktionalität. Du kannst aber über entweder über einen Hack oder einen Class Helper and die Funktion DestRect herankommen, die dir das gewünschte Rechteck liefert.


Delphi-Quellcode:
type
  TImageHelper = class helper for TImage
    function EffectiveRect: TRect;
  end;

function TImageHelper.EffectiveRect: TRect;
begin
  result := DestRect;
end;

loirad 4. Okt 2012 15:45

AW: Wie kann ich die angezeigte Größe des Images ermitteln?
 
Danke für die Antwort!
Kann man das nicht direkt aus dem Image auslesen oder so?

loirad 4. Okt 2012 15:59

AW: Wie kann ich die angezeigte Größe des Images ermitteln?
 
Habe es jetzt so gelöst:
Delphi-Quellcode:
 
if (Bild1.Picture.Height<>0) and (Bild2.Picture.Height<>0) then
  begin
   if Bild1.Picture.Height<Bild1.Picture.Width then
    begin
     B1w:=Bild1.Width;
     B1h:=round(((Bild1.Picture.Height)/(Bild1.Picture.Width))*Bild1.Width);
    end
    else
     begin
      B1w:=((Bild1.Picture.Height) div (Bild1.Picture.Width))*Bild1.Width;
      B1h:=Bild1.Width;
     end;
Vielen Dank für eure Hilfe!

Schöne Rest-Woche noch!
loirad

Bummi 4. Okt 2012 16:14

AW: Wie kann ich die angezeigte Größe des Images ermitteln?
 
Das Ergebnis stimmt hier aber nicht ...

loirad 4. Okt 2012 16:16

AW: Wie kann ich die angezeigte Größe des Images ermitteln?
 
Warum was funktioniert nicht?

Bummi 4. Okt 2012 16:32

AW: Wie kann ich die angezeigte Größe des Images ermitteln?
 
Du berücksichtigst nicht dass Image und Bild jeweils beliebige Seitenverhältnisse haben können.

Code:
gef .H 133 gef. B 177
Imageh. 177 Imageb. 97
Bildh. 301 Bildb. 401


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:06 Uhr.
Seite 1 von 2  1 2      

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