-
Forum: Multimedia
by DeddyH,
20. Sep 2012
So, hier noch ein paar Gedanken dazu:
- wir benötigen die Abmessungen des Buttons relativ zur im Image enthaltenen Grafik
- die Koordinaten des Buttons sind aber relativ zu seinem Parent (Formular, Panel, Tabsheet oder wo er auch draufliegt)
- je nach Einstellungen des TImage muss seine Breite/Höhe nicht der der Grafik entsprechen
- daraus folgt, dass wir mit einem Offset für X- und Y-Achse...
-
Forum: Multimedia
by DeddyH,
20. Sep 2012
Ich melde mich gleich nochmal, bin gerade in der Fernwartung.
-
Forum: Multimedia
by DeddyH,
20. Sep 2012
Ja, wie denn nun? Soll es sich nur nach rechts und unten ausdehnen oder auch nach links und oben?
-
Forum: Multimedia
by DeddyH,
20. Sep 2012
Und das Bild soll sich in alle 4 Richtungen ausdehnen, richtig?
-
Forum: Multimedia
by DeddyH,
20. Sep 2012
Dass es generell mit Prozentrechnung funktioniert habe ich ja gezeigt. Du hast aber 2 Probleme:
- Du brauchst das richtige Ereignis
- Du brauchst die korrekten Bezugskoordinaten
Das Ereignis ist ja noch einfach: sobald sich die Bildgröße ändert, muss sich auch die Buttongröße ändern. Da Du das per Code vergrößerst/verkleinerst, musst Du anschließend auch den Button per Code ändern. Schwieriger...
-
Forum: Multimedia
by DeddyH,
20. Sep 2012
Ich weiß auch nicht, wie ich noch helfen soll, ohne das Programm selbst zu schreiben :|
-
Forum: Multimedia
by DeddyH,
20. Sep 2012
Es ging ja nicht um das Umsetzen, sondern um das Verständnis. Im OnCanResize sind NewWidth und NewHeight Variablenparameter, d.h. vereinfacht gesagt sie werden "außerhalb" deklariert und Dir zur Bearbeitung übergeben. Schreibst Du also dort Werte hinein, werden sie übernommen und wirken sich damit aus, das ist der Grund für das von Dir beobachtete Verhalten.
Ansonsten kann ich Dir für die...
-
Forum: Multimedia
by DeddyH,
20. Sep 2012
Vielleicht hilft das hier zum Verständnis: Deklaration von Funktionsparametern
-
Forum: Multimedia
by DeddyH,
20. Sep 2012
Du weißt, was ein Var-Parameter ist? Im CanResize setzt Du ja Höhe und Breite neu, wohingegen in meinem Beispiel die Variablen nur der Berechnung dienen. Schau doch einmal hier: TCanResizeEvent
-
Forum: Multimedia
by DeddyH,
20. Sep 2012
Welche Änderungen hast Du denn gemacht (Code)?
-
Forum: Multimedia
by DeddyH,
20. Sep 2012
In der CanResize-Methode werden NewWidth und NewHeight als Parameter übergeben, Du kannst also entweder auf OnResize ausweichen wie in meinem Beispiel oder Du benennst die lokalen Variablen um.
-
Forum: Multimedia
by DeddyH,
20. Sep 2012
Mir ist der Gedanke gekommen, dass man das doch mit einfacher Prozentrechnung lösen könnte. Dazu merkt man sich den prozentualen Anteil (als Gleitkommazahl für größere Genauigkeit) der Koordinaten relativ zum gewünschten Rechteck. Der Einfachheit halber habe ich hier testhalber einen neuen Datentyp definiert und als privates Feld in meinem Formular deklariert:
type
TPercentRect = record
...
-
Forum: Multimedia
by DeddyH,
19. Sep 2012
Definier doch erst einmal "an der selben Stelle". Ich nehme einmal an, dass alle 4 Ecken manipuliert werden müssen, damit sie relativ zum Bild bleiben, oder?
-
Forum: Multimedia
by DeddyH,
19. Sep 2012
Mir ist nicht ganz klar, was daran nicht zu verstehen ist: TWinControl.ScaleBy :gruebel:
-
Forum: Multimedia
by DeddyH,
19. Sep 2012
Und Autosize auf false, hatte ich noch vergessen.
-
Forum: Multimedia
by DeddyH,
19. Sep 2012
Das oben sollte ein Beispielcode sein, der das Image (DeinImage genannt) um 25% vergrößern soll, er gehört also in das OnClick des "Größer"-Buttons. NewWidth und NewHeight sind dabei lokale Integer-Variablen.
-
Forum: Multimedia
by DeddyH,
19. Sep 2012
Billigste Lösung: Stretch, Center und Proportional des TImage auf true stellen und dieses dann vergrößern/verkleinern. Beispiel:
NewWidth := round(DeinImage.Width * 1.25);
NewHeight := round(DeinImage.Height * 1.25);
DeinImage.Width := NewWidth;
DeinImage.Height := NewHeight;
Das sieht vermutlich nicht besonders toll aus, aber probier es mal.