AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Image vergrößern und verkleinern
Thema durchsuchen
Ansicht
Themen-Optionen

Image vergrößern und verkleinern

Ein Thema von needatip · begonnen am 28. Okt 2005 · letzter Beitrag vom 3. Nov 2005
Antwort Antwort
needatip

Registriert seit: 11. Jan 2004
246 Beiträge
 
Delphi 10.4 Sydney
 
#1

Image vergrößern und verkleinern

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

Bitte um Rat.

Bin in Sachen Grafik nicht gut !
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Image vergrößern und verkleinern

  Alt 28. Okt 2005, 13:59
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.
Martin Weber
  Mit Zitat antworten Zitat
needatip

Registriert seit: 11. Jan 2004
246 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Image vergrößern und verkleinern

  Alt 28. Okt 2005, 14:53
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;
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Image vergrößern und verkleinern

  Alt 28. Okt 2005, 15:00
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.
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
needatip

Registriert seit: 11. Jan 2004
246 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Image vergrößern und verkleinern

  Alt 28. Okt 2005, 15:37
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 ?
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Image vergrößern und verkleinern

  Alt 3. Nov 2005, 09:42
Hmm.. davon hab ich leider noch keine Ahnung. Kann jemand anders weiterhelfen?
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#7

Re: Image vergrößern und verkleinern

  Alt 3. Nov 2005, 09:50
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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz