![]() |
Image vergrößern und verkleinern
Hallo zusammen.
Ich habe auf meinem Form1 eine Image-Komponente und eine Checkbox. In die Image-Komponente lade ich ein Jpeg Bild. Beim Anklicken der Checkbox soll nun das Image auf seine Originalgröße gebracht werden. Das mache ich mit
Delphi-Quellcode:
Wenn ich aber das Bidl mit
"Image1.Autosize := true"
Delphi-Quellcode:
wieder in die Imagegrösse einpassen will,
"Image1.Autosize := false"
funktioniert das nicht so. Auch nicht mit
Delphi-Quellcode:
Muss ich das Image irgendwie neu zeichnen ?
"Image1.Strech := true"
Bitte um Rat. Bin in Sachen Grafik nicht gut ! |
Re: Image vergrößern und verkleinern
Naja das Image hat nach Autosize ja die OrginalHöhe und die OrginalBreite des Bildes angenommen. Um das wieder rückgängig zu machen müsstest du vor dem AutoSize = true die Höhe und die Breite der ImageKomponente speichern und nach dam Autosize = false Diese wieder laden und danach dann streched = true. Dann müsste es gehen.
|
Re: Image vergrößern und verkleinern
Hab das versucht aber dann gerät das Programm in eine Endlosschleife und stürzt ab.
Was mach ich da falsch ? Mein jetziger Code:
Delphi-Quellcode:
var x,y : integer;
begin if CheckBox1.Checked = false then begin x := Image1.Width; y := Image1.Height; Image1.Autosize := true; Image1.Stretch := false; end else begin Image1.Autosize := false; Image1.Width := x; Image1.Height := y; Image1.Stretch := true; end; end; |
Re: Image vergrößern und verkleinern
wo hast denn das drin stehen? in nem ButtonOnClick? mach mal x und y als globale Variablen, sonst werden sie bei derneutem ButtonClick neu initialisiert und die alten werte sind weg.
Edit: ausserdem solltest du noch prüfen ob Autosize bereits aktiviert ist, weil wenn du zweimal bei deaktivierter Checkbox auf den Button klickst sind die Ursprungsdaten auch weg. |
Re: Image vergrößern und verkleinern
OK, das war mein Fehler, dass ich keine globalen Variablen genommen habe.
Habe auch x,y beim OnActivate-Ereignis initialisiert. Jetzt funzts richtig. Ich würde aber gern noch folgendes implementieren. Ich habe ja das image in einer Scrollbox untergebracht. d.h. das image kann dann mit den Scrollboxen horiz. u. vert. gescrollt werden. Wie kann ich es nun anstellen, daß ich die Grafik innerhalb der Scrollbox mit der Maus verschiebe ? |
Re: Image vergrößern und verkleinern
Hmm.. davon hab ich leider noch keine Ahnung. Kann jemand anders weiterhelfen?
|
Re: Image vergrößern und verkleinern
Hi,
ja ist nicht ganz trivial, aber die Grundidee ist es. Dein Image hat ein OnMouseDown und ein OnMouseUp Ereignis, die haben wiederum eine X und Y Koordinate der Maus im aktuellen Ausschnitt. Mit der Maus verschiebt man, indem man sich die Koordinaten des OnMouseDown merkt und den entsprechenden Ausschnitt um die Differenz zur aktuellen Position verschiebt (während gedrückter Taste dann in einem OnMouseMove). Wichtig ist, dass du hier immer prüfen solltest / musst ob die linke(rechte) Maustaste gerade gedrückt ist oder nicht (sonst verschiebst du den Ausschnitt schon wenn sich die Maus über den bewegt). Das eigentlich interessante ist ja nur, die Berechnung für's korrekte verschieben zu machen. Aber ist auch nur Dreisatz und da du schon für Scrollbars eine Lösung hast... Also einfach OnMouseDown, OnMouseMove und OnMouseUp richtig verwenden. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:14 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-2025 by Thomas Breitkreuz