Seite 1 von 1

[gelöst] scale rückgängig machen?

Verfasst: 21. Februar 2010 23:43
von Timebeast
Hallo Leute,
nachdem ich mir ja immer fast alle meine Fragen selbst beantworten kann, bin ich nun doch an einem Punkt wo ich fragen muß:

Um es kurz zu machen, gibt eine "unscale" Funktion?

Etwas präziser liegt mein Problem darin, das ich eine Scene in einem QGraphicView eingebettet habe. Um in die Scene "ein zoomen" zu können nutze ich:

Code: Alles auswählen

ui.graphicsView_Anzeige->scale(1.1, 1.1);
zum "raus zoomen" dementsprechend:

Code: Alles auswählen

ui.graphicsView_Anzeige->scale(0.9, 0.9);
Alles wunderbar, funktioniert. Nach ein paar mal rein/raus zoomen will ich dann aber die eigendliche Größe der Scene wieder im Graphicsview sehen,...ein unscale halt,...gibt es soetwas?
Jemand eine Idee wie man so etwas elegant lösen könnte.

Grüße
R.

Verfasst: 22. Februar 2010 00:03
von Christian81
Du musst Dir einfach deinen Scalefactor merken.

Verfasst: 22. Februar 2010 00:12
von TSS
Als kleine Anmerkung:
Um den scale(1.1,1.1) rückgängig zu machen, solltest du als Faktor 1/1.1, also 0.90909... nehmen, sonst wird das Bild mit der Zeit immer kleiner.

Verfasst: 22. Februar 2010 13:10
von Timebeast
ah, jetz, ja,... danke.

@christian81:
he he, jupp, das mit dem "merken" meines Skalierungsfaktors hatte ich auch schon so programmiert, aber irgendwie wurde das programmiertechnisch ganz schön unsauber wie ich fand,...ausserdem funktionierte das nicht so wirklich, dank "TSS" (siehe unten) weiß ich ja nun auch warum. Ich dachte halt, das es da vielleicht eine, sagen wir mal, trickreichere Möglichkeit für geben würde, die ich nur nicht in der Doku gefunden habe. Danke trotzdem, so weiß ich wenigstens das ich den "richtigen" Weg eingeschlagen habe.

@TSS:
"...solltest du als Faktor 1/1.1, also 0.90909..." das is ja mal nen Tip, verdammt, genau das hatte ich im übrigen falsch gemacht, Danke! Ich hatte den gespeicherten Skalierungsfaktor immer von Eins abgezogen, und, wie Du schon geschrieben hast, wurde das Bild mit der Zeit immer kleiner. Warum man "1/Skalierungsfaktor" rechnen muß, ist mir zwar, rein rechnerisch noch nicht klar, aber ich hab auch noch keine 5Min. drüber nachgedacht, sprich, da komm ich selbst noch drauf :wink:

Vielen Dank zumindest, Ihr habt mir echt weitergeholfen

Gruß
Ralf

Verfasst: 22. Februar 2010 13:56
von Timebeast
Ich nochmal,
hat ja nun doch noch 30Min gedauert bis ich´s entgültig zum laufen gebracht habe. Dabei hatte "TSS" mit dem Schlagwort Faktor eigendlich schon alles gesagt.
Naja, für jeden der vielleicht ein ähnliches Problem hat, hier nochmal die Lösung. Das "aufaddieren" der Skalierungsfaktoren geht halt mit folgendem Code Fragment (Bsp. Vergrößern):

Code: Alles auswählen

	 ui.graphicsView_Anzeige->scale(1.1, 1.1);
	 Skalierungsfaktor*=(1/1.1); //Skalierungsfaktor=Skalierungsfaktor*(1/1.1)
Grüße
Ralf