Zitat von
Medium:
Aha, ein Label also. Das wäre z.B. eine wichtige Information gewesen, die du in deinem 1. Beitrag aber verheimlichst. Nimm ein TStaticText. TLabel ist nur ein GraphicControl und hat damit keinen eigenen Canvas, und zeichnet somit auf den Canvas seines Parents: Das Formular. Da TImage32 aber einen eigenen Canvas hat der über dem Formular gezeichnet wird, überdeckt dies dein Label. Die Formel selber ist völlig korrekt.
Ich hoffe du verstehst jetzt, dass es durchaus wichtig ist wenigstens ein paar Randinformationen zu liefern.
Ich darf an dieser Stelle leider nur ein TLabel nehmen. Im übrigen sehe ich das Label auch, aber halt immer an der falschen Position. Mal zu weit rechts, mal zu weit links (obwohl die Bilder die gleichen Höhe/Breite-Verhältnisse haben) und auch gleich groß dargestellt werden. Das liegt daran, dass Image.Bitmap.Width die Breite des Originalbildes zurückliefert, ich brauche aber die Breite des skalierten Bildes. D.h. wenn ich ein 500x500 Pixel Bild darstelle, ist das Label zu weit rechts (es wird runterskaliert)
stelle ich aber ein ein 3x3 Pixel Bild ein (wird genau so groß dargestellt wie das 500x500 Pixel Bild), dann ist das Label auf dem Bild (es wird hochskaliert) und das Label landet fast in der Mitte.
Angenommen das TImage32 ist 1000 Pixel breit und 50 Pixel hoch, dann ergibt das laut der Formel, di ich benutze folgendes:
x := (Image.Width div 2) + (Image.Bitmap.Width div 2) + 5;
500x500: x=755
3x3: x=506;
x ist übrigens label.left.
Im gegebenen Fall muss x in beiden Fällen gleich sein, da beide Bilder auf die gleiche Größe skaliert werden.
Ich hoffe, ich konnte das Problem verdeutlichen.