Ich hoffe, daß dir die Funktionsweise von TRect bekannt ist. TRect ist ein Record und enthält vier Koordinaten. StretchDraw past das Bild in diese Koordinaten ein. Dabei werden die Proportionen nicht beachtet und müssen bei Bedarf selbst berechnet werden.
Allerdings wird es bei deinem Code zu Problemen kommen:
Quelltext
1:
| bmp.Canvas.StretchDraw(myrect,bmp); |
verkleinert nicht das Bmp Bild, sondern zeichent ein weiteres Bild auf dem Bild. Du solltest also eine zweite Bitmap von der Größe von myRect erstellen und dort dein Bild zeichen. Alternativ kannst du das Bmp Bild nachträglich anpassen. Zu Problem könnte es kommen wenn das gestrechte Bild größer ist als das Alte. Dann hast du nur noch ein Teil des Bildes. Besser ist eben ein zweites Bild.
Quelltext
1:
| bmp2.Canvas.StretchDraw(rect(0, 0, 32, 32),bmp); |
Dieses Beispiel zeichent Bmp in eine zweites Bild von der Größe 32x32. Bmp2 muß vorher die Koordinaten 32x32 zugewiesen bekommen. Du kannst auch myRect := rect(0, 0, 32, 32) machen.
Wie funktioniert StrechDraw? So in etwas wie CopyRect. Nur sparst du dir eine zweite Rectvariable, da StrechDraw von der jetzigen göße des Bildes ausgeht.