![]() |
TImage: Größe ändern
Hallo!
Also, bin an der TImage-Komponente am verzweifeln. Ich kriegs einfach nicht richtig gebacken die zur Laufzeit zu vergrößern. Ich hab ein schmales TImage (eine Art Lineal, die Einteilung etc zeichne ich zur Laufzeit darauf, Picture ist keins geladen). Ich will nun zu Laufzeit die Größe (Breite) des Images ändern. Verkleinern: funktioniert mit Image.Width := ... Dann wieder vergrößern: Es lässt sich genauso vergrößern, gezeichnet wird aber nur bis zu der Breite wie es am Anfang war Wie krieg ich es hin das TImage zu vergrößern so dass man dann auch in dem vergrößerten Bereich aufs Canvas zeichnen kann? Width? Picture.Width? Picture.Graphic.Width? Ich hoffe jemand kennt sich damit aus... Gruß, Sebastian |
Wenn ich Dir einen Tipp geben darf, dann nutze die TPaintBox Komponente, die ist dafür geeigneter. Im Hintergrund erstelle ein TBitmap, welches Du dann im OnPaint Ereignis auf den PaintBox.Canvas kopierst.
Die Image Komponente ist wirklich nur gut, wenn Du auch ein Bild lädst. |
Hi,
warscheinlich hast Du noch Strech := False; //Sollte auf True, dann ist wieder das ganze Image füllbar. Proportional könnte Dir auch noch weiter helfen. Grüsse, Daniel :hi: |
Stretch bewirkt keinen Unterschied, außer dass das Bild verzerrt wird.
Wenn ich width und height anpasse, wieso kann ich dann nicht in den neuen Bereich zeichnen (mit Canvas.XXX)? Gruß, Sebastian |
TImage.Canvas ist direkt vom geladenen Bild (Picture) abhängig. Wenn kein Bild geladen wird, dann ist die Größe des Canvas unveränderlich gleich der Größe von TImage zum Zeitpunkt der Erstllung des Images. :!: NIMM TPainBox :!:
|
Hui den ersten Beitrag (von sakura) hab ich übersehen :oops:
Ich hab eigentlich TImage genommen da dieses den Inhalt speichert, ich also nicht immer neu zeichnen muss. Aber so wies aussieht ists wohl doch einfacher mit ner PaintBox. Danke nochmal sakura und Daniel! Gruß, Sebastian |
:twisted: Wie, mich übersehen :twisted:
...:cat:... |
Naja, direkt auf den Link aus der Benachrichtigungsmail geklickt, Browserfenster zu klein, nicht hochgescrollt... :mrgreen:
Aber noch eine Frage zu TPaintBox: Ich hab davon vier Stück auf dem Formular, vier Bitmaps die ich beim OnPaint in die entsprechende PaintBox zeichnen muss. Ist es sinnvoller für jede PaintBox einen eigenen OnPaint Event-handler zu schreiben oder für alle MainForm.OnPaint zu nehmen? Gruß, Sebastian |
Ich würde einen OnPaint Handler erstellen für die Paint Boxes, aber nicht das OnPaint Ereignis des Forms. Kurzes Beispiel
Code:
procedure BoxesOnPaint(Sender: TPaintBox);
var PB: TPaintBox; Bmp: TBitmap; begin if Sender = PaintBox1 then begin PB := PaintBox1; Bmp := Bitmap1; end else if Sender = PaintBox2 then begin PB := PaintBox2; Bmp := Bitmap2; end else if Sender = PaintBox3 then begin PB := PaintBox3; Bmp := Bitmap3; end else if Sender = PaintBox4 then begin PB := PaintBox4; Bmp := Bitmap4; end else begin ... Exit; end; ... PB.Canvas.CopyRect(R, Bmp.Canvas, R); // R = TRect |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:11 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