QGraphicsview/-scene konzeptionelles Problem zum Skalieren
Verfasst: Sonntag 8. Juli 2012, 10:15
Hallo
Ich möchte beim skalieren einer Graphicsscene, dass bestimmte items ihre "sichtbare" Größe auf dem Bildschirm beibehalten. Also sozusagen dass nur die Abstände der items skaliert werden.
Wenn ich zum Beispiel eine Linie zeichne und die Endpunkte mit dicken Punkten markiere, möchte ich dass sich die Länge der Linie sowie die position der Markierungspunkte gemäß bem Skalierungsfaktor ändert, die größe der Markierungspunkte auf dem Bildschirm jedoch nicht.
Bevor ich mich dabei in meiner Idee verrenne, wollte ich mal nachfragen ob das überhaupt sinn macht.
Meine Idee dazu ist: Jedes mal wenn der inhalt des Graphicsview skaliert wird, müsste man die items, die ihre dargestellte Größe behalten sollen mit "entgegengesetztem" Skalierungsfaktor skalieren. Also ungefähr so:
- Eine Klasse von Items ableiten die ihre größe behalten (lockedSizeItem oder so)
- ein Event suchen oder selber implementiern, das immer kommt wenn das Graphicsview skaliert wird
- bei diesem Event alle lockedSizeItems in der Scene vergrößern/verkleinern
Bitte sagt mir ob das ein vernünftiger Ansatz ist, oder ob das einfacher geht. Außerdem hab ich angesichts dieser wagen Idee keine genaue Vorstellung wie man das sinnvoll implementiert. Falls mir jemand kurz einen lösungsweg skizzieren könnte wäre ich sehr Dankbar.
Gruß Arthur Dent
Ich möchte beim skalieren einer Graphicsscene, dass bestimmte items ihre "sichtbare" Größe auf dem Bildschirm beibehalten. Also sozusagen dass nur die Abstände der items skaliert werden.
Wenn ich zum Beispiel eine Linie zeichne und die Endpunkte mit dicken Punkten markiere, möchte ich dass sich die Länge der Linie sowie die position der Markierungspunkte gemäß bem Skalierungsfaktor ändert, die größe der Markierungspunkte auf dem Bildschirm jedoch nicht.
Bevor ich mich dabei in meiner Idee verrenne, wollte ich mal nachfragen ob das überhaupt sinn macht.
Meine Idee dazu ist: Jedes mal wenn der inhalt des Graphicsview skaliert wird, müsste man die items, die ihre dargestellte Größe behalten sollen mit "entgegengesetztem" Skalierungsfaktor skalieren. Also ungefähr so:
- Eine Klasse von Items ableiten die ihre größe behalten (lockedSizeItem oder so)
- ein Event suchen oder selber implementiern, das immer kommt wenn das Graphicsview skaliert wird
- bei diesem Event alle lockedSizeItems in der Scene vergrößern/verkleinern
Bitte sagt mir ob das ein vernünftiger Ansatz ist, oder ob das einfacher geht. Außerdem hab ich angesichts dieser wagen Idee keine genaue Vorstellung wie man das sinnvoll implementiert. Falls mir jemand kurz einen lösungsweg skizzieren könnte wäre ich sehr Dankbar.
Gruß Arthur Dent