QGraphicsView(new QGraphicsScene(parent), parent)
{
this->win = (MainWindow *)parent;
- this->rotaryImg = win->uiInfo->getMainForm()->getRotaryImage();
+ this->rotaryImg = NULL;
+ this->rotaryItem = NULL;
this->grabPos = QPoint(-1, -1);
this->grabAngle = 0;
this->rotaryDegree = 0;
setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
setAlignment(Qt::AlignLeft | Qt::AlignTop);
- update();
+ updateLayout();
}
void RotaryView::createItems()
scene()->addItem(rotaryItem);
}
-void RotaryView::update()
+void RotaryView::updateLayout()
{
scene()->clear();
/* repositioning & resizing */
const int alignOffsetX = (rotaryImg->width() - displayRect.width()) / 2;
const int alignOffsetY = (rotaryImg->height() - displayRect.height()) / 2;
+ const qreal scaleFactor = win->getUIState()->getScaleFactor();
setGeometry(
- displayRect.x() - alignOffsetX,
- displayRect.y() - alignOffsetY,
- rotaryImg->width(), rotaryImg->height());
+ (displayRect.x() - alignOffsetX) * scaleFactor,
+ (displayRect.y() - alignOffsetY) * scaleFactor,
+ rotaryImg->width() * scaleFactor,
+ rotaryImg->height() * scaleFactor);
scene()->setSceneRect(0, 0, width(), height());
createItems();
setTransform(QTransform(sx, 0, 0, 0, sy, 0, 0, 0, 1));
/* masking */
- setMask(win->uiInfo->getMainForm()->getRotaryImage()->mask());
+ QPixmap scaledRotaryImg = rotaryImg->scaled(
+ rotaryImg->width() * win->getUIState()->getScaleFactor(),
+ rotaryImg->height() * win->getUIState()->getScaleFactor());
+ setMask(scaledRotaryImg.mask());
QGraphicsView::resizeEvent(event);
}