Sfrollrad Zoom Sperrmöglichkeit?

FriedrichLaher shared this question 2 years ago
Answered

hab ich nicht geduldig genug gesucht oder gibts das wirklich nicht: das zoomen mit dem scrollrad nach Bedarf zu verhindern/erlauben. es kann so leicht verseshentlch gezoomt werden und die Wiederherstellung des alten Zustandes kann schwierig sein-.

Comments (12)

photo
1

die Wiederherstellung des alten Zustandes kann schwierig sein
do / undo..?

c46e4c5b3e9f36251a08fec587d13f5a

photo
1

danke jumera, aber da man beim verssehentlichem zooming nicht mitzählt, muß mana immer wieder "messen" obs schon stimmt.

photo
photo
1

se puede suprimir el zoom si ponemos en los valores de la pantalla un valor dependiente mediante el uso de una variable y recuperar el zoom poniendo numeros que no provengan de una variable como en el botón del adjunto

ver propiedades--->graficos

Files: foro.ggb
photo
1

danke mathmagic, klalppt aber wirklich versteh ich es nicht

photo
photo
1

oder mit JS (allerdings sowohl Shift als auch Zoom werden gesperrt)

enableShiftDragZoom(boolean enable)

photo
1

sorry

Zoom wird NICHT gesperrt. Das ist möglicherweise ein ggb-Bug.

photo
1

danke rami. aber bei mir funktioniert es nicht

photo
1

unsere letzten beiden Beiträge haben sich vermutlich zeitlich überschnitten.

photo
photo
1

Erläuterung zum Funktionsprinzip der Lösung von mathmagic:

(anmerkung: es ist vermutlich auch in (in meinem) Deutsch schwer verständlich)

Wenn die Dimensions-Parameter xmin, xmax, ymin, ymax (in den 2D Grafik Präferenzen) mit dem Script ZoomIn() mit den Namen von Obekten in der Algebraansicht gleichgesetzt werden, dann wird nicht der neue Wert (als Kopie) eingesetzt. Vielmehr wird der Objekt-Name in diese Parameter eingesezt. Das bewirkt, dass ggb die Werte nicht mehr ändert (ggb müsste die Werte in den verwendeten Objekten ändern, tut es aber nicht, somit bleibt zoom und shift blockiert)


Beim Setzen der Objekt-Namen in die Parameter sollten die Werte der Objekte dem aktuellen Zustand des Fensters entsprechen. Den aktuellen Zustand (mit den 4 Werten) erhält man mit den Objekten Corner(1) und Corner(3). Die Definition der 4 Objekte (a,b,c,d) beziehen sich deshalb auf Corner(1) und Corner(3)


Will man nun den Normalzustand wieder herstellen, dann müssen die Werte der Objekte explizit mit CopyFreeObjekt() in freie, unabhangige, nicht an ein Objekt geundene Werte umgewandelt werden bevor man diese Werte den Parametern zuordnet, sodass dann dort wieder numerische Werte anstelle der Variablen-Namen stehen, sodass zoom und shift wieder möglich ist.

----------------------------------------------------------------

So weit so gut.

Das Problem besteht darin, dass in Abhängigkeit des aktuellen Zoomfakors sowie in Abhängigkeit der Anzahl der bereits getätigten Fixierungen und Freigaben des Fensters, der Fenster-Ausschnitt und das Achsenverhältnis immer stärker verändert wird. Das ist auf einen "prähistorischen" ggb-Fehler zurückzuführen, der besser nicht korrigiert werden sollte. Zwischen den Werten in den (5) Cornern und der tatsächlichen Fenstergrösse besteht an jeder Fensterseite eine Differenz von 1 Pixel.

Dieser Fehler kann (muss aber nicht) korrigiert werden indem man die Variablen als freie Objekte definiert und mit SetValue() in einem Skript setzt. Gleichzeitig wird auch das jeweilige Rand-Pixel addiert respektive subtrahiert.

Im Anhang befindet sich die diesezüglich erweiterte Version von mathmagic.

--------------------------------------------------------------

Anmerkung zur ursprünglichen Version von mathmagic:

das "a+0.01" führt zumindest in ggb5 zum Fehler, dass zwar das Verschieben des Fensters nicht möglich ist stattdessen wird aber ein ZoomOut() ausgeführt. Das kann man dadurch beheben, dass "a" als freies Objekt definiert wird und die Zuordnung des Corner-Wertes und dem Korrekturwert 0.01 per SetValue() erfolgt. (Oder indem man +0.01 weglässt)

Besser wäre vermutlich der konstante Korrekturwert 0.02 für alle 4 Werte (a,b,c,d via Skript und Vorzeichengerecht). Das würde dem Zoomfaktor der Standardansicht entsprechen. Dann allerdings wäre der Mehraufwand für den errechneten (in allen Fällen richtigen) Pixel-Korrekturwert nur noch minimal.

photo
1

If you need a very "locked" Graphics View (no pan, no zoom), you can define the min and max values you need for the axes, e.g. xi=-10, xf=10, yi=-5, yf=7, and use these values in the Properties of the Graphics View, by typing the names of these variables in the xMin, xMax, yMin, yMax boxes.

photo
1

Thank you Simony

but if already a lot of objects exist that seems not to work - there is something like a collapse after entering xMin and then these settings are not longger offered for changing

photo
photo
1

Hallo zusammen,

ich würde das Thema gerne noch mal aufgreifen:

Mit der JS Funktion enableShiftDragZoom() kann man die entsprechenden Events mit dem Mauszeiger steuern, nicht aber die Events mit dem Scrollrad. Da wäre eine erweiterte oder neue Funktion zur Steuerung sehr komfortabel.

Vielleicht wäre das eine Idee für das Geogebra-Team?

LG Eva Kluge

© 2023 International GeoGebra Institute