Seite 1 von 1

Nullpunkt (0,0) soll in eigenem Widget unten links sein

Verfasst: 19. Mai 2009 11:30
von Apfelkuchen58
Ich möchte im eigenen Widget zeichnen, dabei soll (0,0) unten links sein.

Diese funktioniert mit dem nachfolgenden Codefragment, ich muss jedoch y mit negativen Werten eingeben.

QPainter painter(this);

int wl = width();
int h = height();

painter.setViewport(0, h, wl, h);
painter.drawRect(0, 0, wl-1, -(h-1));

Was muss ich ändern, damit ich ein positives y beim Zeichen verwenden kann?

Verfasst: 19. Mai 2009 11:54
von pfid
Genau kann ich dir keine Lösung nennen (kein QoS-Vertrag unterschrieben), habe selbst erst einmal was selbst gezeichnet (und da auch nur mit Qwt).

Aber schau dir mal die map-Funktionen an, ob dich die weiter bringen:

http://doc.trolltech.com/4.5/qwidget.html#mapFrom

Ansonsten schau mal hier rein ob da was dabei ist:

http://doc.trolltech.com/4.4/examples.html#painting

Verfasst: 19. Mai 2009 12:09
von franzf
Prinzipiell sollte man versuchen, sich an die "verdrehte" y-Achse zu gewöhnen, geht schneller als man denkt :)

Ansonsten hilft
1) QPainter::setTransform()
2) QTransform::scale( 1.0, -1.0 )
sollte das positive Malen in y-Richtung nach oben hin durchführen.
Bedenke, dass dein Koordinatenursprung immer noch links oben ist. Da hilft ein translate() (QPainter, oder QTransform, das Testen überlass ich dir).

Grüße
Franz

Verfasst: 19. Mai 2009 12:51
von pfid
franz schlägt pfid :( :P

Verfasst: 19. Mai 2009 13:02
von franzf
pfid hat geschrieben:franz schlägt pfid :( :P
Ich habe nirgendwo einem Wettbewerb zugestimmt :P