(0,0)

2013-02-24 5 views
2

QGraphicsItem의 로컬 Co-Ordinate 시스템을 변경하여 scene-> setSceneRect (0,0,600,600) 인 scene이라는 QGraphicsView 및 QGraphicsScene이 있습니다.(0,0)

boundingRectangle (0,0,600,600)을 사용하여 background라는 간단한 사용자 정의 QGraphicsItem을 만들었습니다.

매우 명확하게 배경 항목의 중심은 (300,300) minX = 0, minY = 0 및 maxX = 600, maxY = 600 ...이지만이 배경 항목의 중심은 (0,0) minX = -300, minY = -300이고 원점은 (0,0)이고 maxX = 300, maxY = 300입니다. 다른 말로하면 배경 항목 로컬 좌표 체계가 우리가 종이에 그려주는 자연 좌표 체계를 반영하기를 원합니다.

x,y graph http://www.shmoop.com/images/prealgebra/unit6/pa.6.094.png

는 어떻게해야합니까.

답변

2

사용자 정의 QGraphcisItem 사용자는 그림과 도형을 담당합니다. 따라서 QGraphicsItem::boundingRect()을 재정의하고 구현하여 일치하는 경계 사각형을 반환하는 한 사각형 왼쪽 위 (-300, -300)와 오른쪽 하단 (300,300)으로 페인트 할 수 있습니다.

class SimpleItem : public QGraphicsItem 
{ 
public: 
    QRectF boundingRect() const 
    { 
     qreal penWidth = 1; 
     return QRectF(-10 - penWidth/2, -10 - penWidth/2, 
         20 + penWidth, 20 + penWidth); 
    } 

    void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, 
       QWidget *widget) 
    { 
     painter->drawRoundedRect(-10, -10, 20, 20, 5, 5); 
    } 
}; 
: 여기

는 Qt는 문서에서 예제