dziwne zachowanie QGraphicsScene::addLine

0

witajcie, próbuję narysować coś płótnie (QGraphicsView). Do tego celu staram się użyć QGraphicsScene jednak zaczynając od prostych zadań chciałem narysować kilka linii. Wszystko byłoby dobrze gdyby to poprawnie rysowało. A może Qt ma jakiś dziwny układ współrzędnych :)

 
    _scene->addLine(-10,0,10,0);
    _scene->addLine(0,-10,0,10);
    _scene->addLine(-100,100,100,-100)); //źle
    _scene->addLine(-100,-100,100,-100,QPen(QColor("green")));//źle

a to już obrazek jaki mi wygenerowało:

user image

pierwsze 2 funkcje addLine wydają się być ok, natomiast kolejne dwie to już jakieś dziwy. Może ktoś coś podpowie co robię źle.

0

Współrzędne to są oddzielne dla widoku,sceny i itemu na niej.
Co ci nie pasuje w tych liniach?Btw,daj oddzielny kolor do każdej z nich,łatwiej będzie śledzić co się wyrysowało.

0

ok, wygląda to tak:

    QGraphicsLineItem *lineItem=_scene->addLine(-10,0,10,0);
    _scene->addLine(0,-10,0,10,QPen(QColor("yellow")));
    _scene->addLine(-100,100,100,-100, QPen(QColor("red")));
    _scene->addLine(-100,-100,100,-100,QPen(QColor("green")));
    _scene->addLine(-100,-100,-100,-50, QPen(QColor("blue")));
 

a tak się renderuje:
user image
Potrzebuję wygenerować układ współrzędnych 2 wymiarowych (x,y tylko dodatnie wartości) tak nawiasem mówiąc :)

problem polega na tym, że chcę sobie ustawić punkt i narysować linię od tego punktu do punktu końcowego. Myślałem, że one za to odpowiadają. Na przykład

 _scene->addLine(-100,-100,100,-100,QPen(QColor("green")));

powinno od punktu x0=-100, y0=-100 do x1=100, y1=-100 narysować linię. To powinna być linia bardziej przy dole ekranu a u mnie ta linia jest u góry zupełnie bez sensu. Nie wiem jak sobie z tym poradzić i zastanawiam się jak powinienem prawidłowo się za to zabrać

0

Aaa no i się wyjaśniła tajemnica :)
Otóż komputery mają układ współrzędnych zaczynający się w lewym,górnym punkcie ekranu-tam mieści się ich punkt (0,0).Zatem jak chcesz malować tak jak to jest przyjęte w matematyce zaczynając od lewego,dolnego rogu współrzędną y musisz konwertować wg wzoru Ym=screen.height-Y

1 użytkowników online, w tym zalogowanych: 0, gości: 1