私のアプリケーションは Qt を使用しています。
QGraphicsPixmapItemを継承するクラスがあります。
これらのアイテムに変換 (回転など) を適用する場合、アイテムの原点 (またはピボット ポイント) は常に左上隅になります。
たとえば、アイテムの位置を設定するときに、実際にピックスマップの中心が変更されるように、この原点を変更したいと思います。
または、回転を適用する場合、回転の原点はピックスマップの中心になります。
私は Qt で箱から出してすぐにそれを行う方法を見つけていないので、次のようにitemChange()を再実装することを考えました:
QVariant JGraphicsPixmapItem::itemChange(GraphicsItemChange Change, const QVariant& rValue)
{
switch (Change)
{
case QGraphicsItem::ItemPositionHasChanged:
// Emulate a pivot point in the center of the image
this->translate(this->boundingRect().width() / 2,
this->boundingRect().height() / 2);
break;
case QGraphicsItem::ItemTransformHasChanged:
break;
}
return QGraphicsItem::itemChange(Change, rValue);
}
Qtのドキュメントでは、アイテムの位置とその変換行列は2つの異なる概念であると述べているため、これでうまくいくと思いました。
しかし、それは機能していません。
何か案が ?