Qt: QPixmapItem rotieren braucht heftigst Rechenzeit

Qt Programmierung, QML, Qt-Plattformen
Antworten
wellnestom
Beiträge: 30
Registriert: Fr Nov 09, 2012 10:29 am

Qt: QPixmapItem rotieren braucht heftigst Rechenzeit

Beitrag von wellnestom » Mi Nov 21, 2012 11:24 am

Hi,
erstmal danke für eure Antworten auf meine vorherigen Fragen! Langsam komm ich dahinter. :mrgreen:
Jetzt aber erstmal folgendes: Ich hab zwei QPixmapItems übereinander liegen und lasse eins davon mit einem TimerEvent alle 30 Millisekunden etwas rotieren. Allerdings lastet das auf meinem Laptop einen Prozessorkern schon voll aus. :shock:
Immerhin will ich ja nur einen Zeiger auf einem analogen Tacho drehen. Es sollen ja noch mehrere dazukommen!
Wenn ich die folgenden Zeilen (die für das rotieren zuständig sind) auskommentiere ist die Prozessorlast <1%.

Code: Alles auswählen

kmhzeiger->translate(drehpunktx , drehpunkty);
kmhzeiger->rotate(kmhdrehwinkel);
kmhzeiger->translate(-drehpunktx , -drehpunkty);
Es liegt also sicher daran. Nun meine Frage: Gibts eine einfachere/schnellere Möglichkeit um ein QPixmapItem zu rotieren? Mach ich irgendwas grundlegend falsch? Sollte für sowas eher zu SDL o.Ä. wechseln?

Gruß Tom

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Qt: QPixmapItem rotieren braucht heftigst Rechenzeit

Beitrag von Xin » Mi Nov 21, 2012 12:02 pm

Ohne größeren Plan von QPixmapItem zu haben:
Die Translation sollte keine Rechenzeit verbraten. Kannst Du die Rotation mal rausnehmen, die Translationen vielleicht mehrfach machen und gucken, ob das Dein Laptop belastet?

Ansonsten ist die Rotation eine durchaus aufwendige Aktion, da jeder einzelne Pixel der neuen Bitmap ja auch sinnvoll gefüllt werden muss. Je nach Größe der Bitmap sind das sehr viele Pixel, die auch noch sauber interpoliert werden wollen. Das möchtest Du 33 mal pro Sekunde machen. Es ist also - je nach der Größe der Bitmap - durchaus eine anstrengende Aufgabe für die CPU.

Hier wäre die Frage, ob man eine Hardwarebeschleunigung über die Grafikkarte in Anspruch nehmen könnte.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

nufan
Wiki-Moderator
Beiträge: 2557
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Qt: QPixmapItem rotieren braucht heftigst Rechenzeit

Beitrag von nufan » Mi Nov 21, 2012 2:23 pm

Xins Antwort ist nur noch hinzuzufügen, dass du mal QImage versuchen könntest. Das ist besser auf Bildverarbeitung ausgelegt. QPixmap ist auf simple Darstellung optimiert.

EDIT:
Noch besser wäre es wahrscheinlich die verschiedenen Zeigerpositionen VORHER zu rendern und dann nur mehr je nach Bedarf das entsprechende Bild anzuzeigen.

Antworten