void UBGraphicsCompass::paint(QPainter *painter, const QStyleOptionGraphicsItem *styleOption, QWidget *widget) { Q_UNUSED(styleOption); Q_UNUSED(widget); mAntiScaleRatio = 1 / (UBApplication::boardController->systemScaleFactor() * UBApplication::boardController->currentZoom()); QTransform antiScaleTransform; antiScaleTransform.scale(mAntiScaleRatio, mAntiScaleRatio); mCloseSvgItem->setTransform(antiScaleTransform); mCloseSvgItem->setPos( closeButtonRect().center().x() - mCloseSvgItem->boundingRect().width() * mAntiScaleRatio / 2, closeButtonRect().center().y() - mCloseSvgItem->boundingRect().height() * mAntiScaleRatio / 2); mResizeSvgItem->setTransform(antiScaleTransform); mResizeSvgItem->setPos( resizeButtonRect().center().x() - mResizeSvgItem->boundingRect().width() * mAntiScaleRatio / 2, resizeButtonRect().center().y() - mResizeSvgItem->boundingRect().height() * mAntiScaleRatio / 2); painter->setPen(drawColor()); painter->drawRoundedRect(hingeRect(), 4, 4); painter->fillPath(hingeShape(), middleFillColor()); painter->fillPath(needleShape(), middleFillColor()); painter->drawPath(needleShape()); painter->fillPath(needleBaseShape(), middleFillColor()); painter->drawPath(needleBaseShape()); QLinearGradient needleArmLinearGradient( QPointF(rect().left() + sNeedleLength + sNeedleBaseLength, rect().center().y()), QPointF(hingeRect().left(), rect().center().y())); needleArmLinearGradient.setColorAt(0, edgeFillColor()); needleArmLinearGradient.setColorAt(1, middleFillColor()); painter->fillPath(needleArmShape(), needleArmLinearGradient); painter->drawPath(needleArmShape()); QRectF hingeGripRect(rect().center().x() - 16, rect().center().y() - 16, 32, 32); painter->drawEllipse(hingeGripRect); if (mShowButtons) paintAngleDisplay(painter); QLinearGradient pencilArmLinearGradient( QPointF(hingeRect().right(), rect().center().y()), QPointF(rect().right() - sPencilLength - sPencilBaseLength, rect().center().y())); pencilArmLinearGradient.setColorAt(0, middleFillColor()); pencilArmLinearGradient.setColorAt(1, edgeFillColor()); painter->fillPath(pencilArmShape(), pencilArmLinearGradient); painter->drawPath(pencilArmShape()); if (scene()->isDarkBackground()) painter->fillPath(pencilShape(), UBApplication::boardController->penColorOnDarkBackground()); else painter->fillPath(pencilShape(), UBApplication::boardController->penColorOnLightBackground()); painter->fillPath(pencilBaseShape(), middleFillColor()); painter->drawPath(pencilBaseShape()); if (mResizing || mRotating || mDrawing || (mShowButtons && rect().width() > sDisplayRadiusOnPencilArmMinLength)) paintRadiusDisplay(painter); }
void UBGraphicsRuler::paint(QPainter *painter, const QStyleOptionGraphicsItem *styleOption, QWidget *widget) { Q_UNUSED(styleOption); Q_UNUSED(widget); UBAbstractDrawRuler::paint(); QTransform antiScaleTransform2; qreal ratio = mAntiScaleRatio > 1.0 ? mAntiScaleRatio : 1.0; antiScaleTransform2.scale(ratio, 1.0); mResizeSvgItem->setTransform(antiScaleTransform2); mResizeSvgItem->setPos(resizeButtonRect().topLeft()); mRotateSvgItem->setTransform(antiScaleTransform2); mRotateSvgItem->setPos(rotateButtonRect().topLeft()); painter->setPen(drawColor()); painter->setBrush(edgeFillColor()); painter->setRenderHint(QPainter::Antialiasing, true); painter->drawRoundedRect(rect(), sRoundingRadius, sRoundingRadius); fillBackground(painter); paintGraduations(painter); if (mRotating) paintRotationCenter(painter); }
QBrush UBGraphicsProtractor::fillBrush() const { QColor fillColor = edgeFillColor();// scene()->isDarkBackground() ? sDarkBackgroundFillColor : sFillColor; QColor fillColorCenter = middleFillColor();//scene()->isDarkBackground() ? sDarkBackgroundFillColorCenter : sFillColorCenter; QColor transparentWhite = Qt::white; transparentWhite.setAlpha(scene()->isDarkBackground() ? sDrawTransparency : sFillTransparency); QRadialGradient radialGradient(rect().center(), radius(), rect().center()); radialGradient.setColorAt(0, fillColorCenter); radialGradient.setColorAt(1, fillColor); return radialGradient; }
void UBGraphicsRuler::fillBackground(QPainter *painter) { QRectF rect1(rect().topLeft(), QSizeF(rect().width(), rect().height() / 4)); QLinearGradient linearGradient1( rect1.topLeft(), rect1.bottomLeft()); linearGradient1.setColorAt(0, edgeFillColor()); linearGradient1.setColorAt(1, middleFillColor()); painter->fillRect(rect1, linearGradient1); QRectF rect2(rect1.bottomLeft(), QSizeF(rect().width(), rect().height() / 2)); painter->fillRect(rect2, middleFillColor()); QRectF rect3(rect2.bottomLeft(), rect1.size()); QLinearGradient linearGradient3( rect3.topLeft(), rect3.bottomLeft()); linearGradient3.setColorAt(0, middleFillColor()); linearGradient3.setColorAt(1, edgeFillColor()); painter->fillRect(rect3, linearGradient3); }
void UBGraphicsTriangle::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *) { painter->setPen(Qt::NoPen); QPolygonF polygon; QLinearGradient gradient1(QPointF(A1.x(), 0), QPointF(A2.x(), 0)); gradient1.setColorAt(0, edgeFillColor()); gradient1.setColorAt(1, middleFillColor()); painter->setBrush(gradient1); polygon << A1 << A2 << B2 << B1; painter->drawPolygon(polygon); polygon.clear(); QLinearGradient gradient2(QPointF(0, B1.y()), QPointF(0, B2.y())); gradient2.setColorAt(0, edgeFillColor()); gradient2.setColorAt(1, middleFillColor()); painter->setBrush(gradient2); polygon << B1 << B2 << C2 << C1; painter->drawPolygon(polygon); polygon.clear(); QLinearGradient gradient3(CC, C2); gradient3.setColorAt(0, edgeFillColor()); gradient3.setColorAt(1, middleFillColor()); painter->setBrush(gradient3); polygon << C1 << C2 << A2 << A1; painter->drawPolygon(polygon); polygon.clear(); painter->setBrush(Qt::NoBrush); painter->setPen(drawColor()); polygon << A1 << B1 << C1; painter->drawPolygon(polygon); polygon.clear(); polygon << A2 << B2 << C2; painter->drawPolygon(polygon); paintGraduations(painter); mAntiScaleRatio = 1 / (UBApplication::boardController->systemScaleFactor() * UBApplication::boardController->currentZoom()); QTransform antiScaleTransform; antiScaleTransform.scale(mAntiScaleRatio, mAntiScaleRatio); mCloseSvgItem->setTransform(antiScaleTransform); mHFlipSvgItem->setTransform(antiScaleTransform); mVFlipSvgItem->setTransform(antiScaleTransform); mRotateSvgItem->setTransform(antiScaleTransform); mCloseSvgItem->setPos(closeButtonRect().topLeft()); mHFlipSvgItem->setPos(hFlipRect().topLeft()); mVFlipSvgItem->setPos(vFlipRect().topLeft()); mRotateSvgItem->setPos(rotateRect().topLeft()); if (mShowButtons || mResizing1 || mResizing2) { painter->setBrush(QColor(0, 0, 0)); if (mShowButtons || mResizing1) painter->drawPolygon(resize1Polygon()); if (mShowButtons || mResizing2) painter->drawPolygon(resize2Polygon()); } }