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

Alles rund um die Programmierung mit Qt
Antworten
Apfelkuchen58
Beiträge: 1
Registriert: 17. Mai 2009 16:47

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

Beitrag 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?
pfid
Beiträge: 535
Registriert: 22. Februar 2008 16:59

Beitrag 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
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag 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
pfid
Beiträge: 535
Registriert: 22. Februar 2008 16:59

Beitrag von pfid »

franz schlägt pfid :( :P
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

pfid hat geschrieben:franz schlägt pfid :( :P
Ich habe nirgendwo einem Wettbewerb zugestimmt :P
Antworten