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
QGraphicsview/-scene konzeptionelles Problem zum Skalieren
- Arthur Dent
- User
- Beiträge: 23
- Registriert: Montag 12. September 2011, 09:51
Optimismus ist, bei Gewitter auf dem höchsten Berg in einer Kupferrüstung zu stehen und "scheiß Götter" zu rufen
Terry Pratchett
Terry Pratchett
@Arthur Dent: Setze bei Elementen, die nicht skaliert werden sollen, das Flag "QGraphicsItem.ItemIgnoresTransformations". Falls Du mehr Kontrolle möchtest, kannst Du auch per "view.transform().inverted()" die inverse Transformation des Views auf das Item anwenden. Dann allerdings ist das Item fest an den View gebunden, insbesondere kannst Du dann nicht dieselbe Szene in zwei verschiedenen Views mit unterschiedlicher Skalierung anzeigen.
- Arthur Dent
- User
- Beiträge: 23
- Registriert: Montag 12. September 2011, 09:51
Vielen Dank für die Hilfe!!!
war genau das was ich gesucht habe.
war genau das was ich gesucht habe.
Optimismus ist, bei Gewitter auf dem höchsten Berg in einer Kupferrüstung zu stehen und "scheiß Götter" zu rufen
Terry Pratchett
Terry Pratchett