2009-05-09 4 views
1

...Qpainter.rotate() 질문 - 나는 메시지 큐를 통해 업데이트로오고 캔버스에 폴리 라인을 그리는 시도하고 내가 Qt의 QPainter를 그릴 및 페인트에 사용 QuantumGIS을 사용자 정의하고

을 QGIS. 그 그림은 아주 멋지지만 ... 폴리 라인이나 폴리곤 개체에는 업데이트 할 때 객체의 회전에 사용할 각도 필드도 포함됩니다. 문제는 painter.rotate() 메서드를 사용하여 폴리 라인이 폴리 라인을 그리기 직전에 선을 회전하려고하면 선이 잘 회전되지만 선의 위치가 변경되고 모든 줌에서 변경된다는 것입니다. Qgis 캔버스의 팬 .. painter.rotate()를 설정하기 전에 painter 상태를 저장하고 있습니다. 다시 그리기 - 다시 OpenGL의 push/popMatrix 함수와 유사한 상태로 복원합니다. Qpainter의 저장 복원 기능이 opengl의 push/popMatrix 기능과 유사한 방식으로 작동합니까 ??

p->save(); 
    //p->rotate(45); 
    p->scale(1.0/rasterScaleFactor, 1.0/rasterScaleFactor); 
    p->drawPolyline(pa); 
    p->restore(); 

도움말이 감사 : 여기

는 코드입니다. 감사합니다. .

답변

1

이 질문을하는 것입니다 그리고 당신은 "현재 화가 상태를 저장합니다") QPainter를이 : (저장 것을 알 수있다. 변환은 재설정되지 않습니다. 귀하의 문제는 원래의 변형 행렬이 자신의 축척과 섞이거나 회전하기 때문입니다. 코드 조각이 너무 작아서 그림의 컨텍스트를 이해할 수 없지만 폴리 라인 페인팅을하기 전에 QPainter::setTransform()을 사용하여 변환을 적절히 재설정하거나 수정해야한다고 생각합니다.

좌표 변환 섹션을 QPainter documentation으로 읽는 것 외에도 related example을 시도하는 것이 좋습니다.