Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Image vergrößern und verkleinern (https://www.delphipraxis.net/55885-image-vergroessern-und-verkleinern.html)

needatip 28. Okt 2005 08:57


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:
"Image1.Autosize := true"
Wenn ich aber das Bidl mit
Delphi-Quellcode:
"Image1.Autosize := false"
wieder in die Imagegrösse einpassen will,
funktioniert das nicht so. Auch nicht mit
Delphi-Quellcode:
"Image1.Strech := true"
Muss ich das Image irgendwie neu zeichnen ?

Bitte um Rat.

Bin in Sachen Grafik nicht gut !

Angel4585 28. Okt 2005 12:59

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.

needatip 28. Okt 2005 13:53

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;

Angel4585 28. Okt 2005 14:00

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.

needatip 28. Okt 2005 14:37

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 ?

Angel4585 3. Nov 2005 08:42

Re: Image vergrößern und verkleinern
 
Hmm.. davon hab ich leider noch keine Ahnung. Kann jemand anders weiterhelfen?

Der_Unwissende 3. Nov 2005 08:50

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