Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   TImage & Size (https://www.delphipraxis.net/74125-timage-size.html)

trockentaucher 28. Jul 2006 13:21


TImage & Size
 
Das waren sie wieder, meine Probleme...

Ich möchte Width & Height eines TImage an das geladene Image anpassen. Die Werte kann ich ja mit TImage.Bitmap.Width & Height auslesen, soweit also kein Problem. Was aber, wenn ich die maximale Breite der Komponente auf sagen wir mal 600 pixel beschränken möchte und das Bitmap entsprechend angepasst wird. Es ändert sich also die dargestellte Anzahl der Pixel. Die TImage.Height möchte ich nun auch an die neue Bitmap.Height anpassen, aber wie?

Any ideas?

Der_Unwissende 28. Jul 2006 13:42

Re: TImage & Size
 
Hi,
entschuldige aber was möchtest du genau haben?
Wenn du die Größe eines Image änderst, ändert sich natürlich auch der Ausschnitt des Bitmaps, das darin dargestellt werden kann. Nach oben ist die Größe natürlich durch das Bitmap selbst beschränkt. Machst du das Image kleiner, so wird einfach ein Teil abgeschnitten.
Wenn ich dich richtig verstehe möchtest du jetzt vermeiden, dass dein Bild an irgendeiner Stelle abgeschnitten wird? Das kannst du ganz leicht erreichen. Setz im Image die Eigenschaft proportional auf True, fertig.
Hier werden die Seitenverhältnisse des Bitmap immer bei behalten. Sollte das Bitmap breiter oder höher sein als dein Image, wird es so neu skaliert, dass die max. zur Verfügung stehende Fläche genutzt wird um das Bild (ohne Verzerrung) anzuzeigen.
Setzt du auch noch stretched auf True, würde immer die max. Fläche genutzt werden (auch wenn das Image größer als die angezeigte Bitmap ist).

Hoffe das war deine Frage.
Gruß Der Unwissende

trockentaucher 28. Jul 2006 13:52

Re: TImage & Size
 
Zitat:

Zitat von Der_Unwissende
Hi,
Hoffe das war deine Frage.
Gruß Der Unwissende

Nein, nicht ganz... proportional & stretch sind nicht das Problem. Die Size der Komponente ist das Problem. Die soll sich nach jedem laden eines Images an die Imagegröße anpassen, es sei denn die Höhe und/oder Breite des Images überschreiten ein definiertes maximum. In diesem Fall lege ich Beispielsweise die Width von TImage fest und möchte das gleiche dann proportional mit der Height machen.

Der_Unwissende 28. Jul 2006 13:58

Re: TImage & Size
 
Ahso,
dann musst du einfach ein wenig rechnen. Du kennst ja das Verhältnis von der Bitmap.Width zu Bitmap.Height. Dieses muss einfach nur gleich dem Verhältnis von Image.Width zu Image.Height sein. Die Bitmapgrößen sind dir immer bekannt und je nachdem ob du die Größe des Bildes in der Breite oder in der Höhe beschränken möchtest, ist dir auch eine weitere Größe bekannt. Damit hast du eine sehr einfache Gleichung, die du lösen kannst.
In deinem Beispiel passt du die Image.Width an. Für die Image.Height muss also gelten:
Delphi-Quellcode:
Image.Height := Image.Width * round(Bitmap.Height / Bitmap.Width);
Analog natürlich wenn du die Höhe anpasst.

So, jetzt aber?!

trockentaucher 28. Jul 2006 15:19

Re: TImage & Size
 
Zitat:

Zitat von Der_Unwissende
Ahso,
So, jetzt aber?!

Fast!

Delphi-Quellcode:
Image.Height := Round(Image.Width * (Bitmap.Width / Bitmap.Height));
So funzt es, danke! :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:31 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