2

私はQGraphicsViewとシーンと呼ばれるQGraphicsSceneを持っています->setSceneRect(0,0,600,600)。

boundingRectangle(0,0,600,600)を使用してbackgroundという単純なカスタムQGraphicsItemを作成しました。

非常に明確に、背景アイテムの中心は(300,300)でminX = 0、minY=0およびmaxX=600、maxY = 600です...しかし、この背景アイテムの中心を(0,0)でminX=にします。 -300、minY = -300、原点at(0,0)およびmaxX = 300、maxY=300。言い換えれば、背景アイテムのローカル座標系に、紙に描いた自然な座標系を反映させたいのです。

x、yグラフ
(出典:shmoop.com

これを行うにはどうすればよいですか。

4

1 に答える 1

2

あなたが習慣を持っているならば、あなたはQGraphcisItem絵と幾何学を担当しています。したがって、をオーバーライドして実装することで一致する境界矩形を返すことを確認する限り、長方形を左上(-300、-300)および右下(300,300)としてペイントできますQGraphicsItem::boundingRect()

Qtドキュメントの例を次に示します。

 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);
     }
 };
于 2013-02-24T19:14:44.180 に答える