-
UID:79354
-
- 注册时间2009-05-17
- 最后登录2018-11-12
- 在线时间327小时
-
- 发帖505
- 搜Ta的帖子
- 精华0
- 金钱4060
- 威望515
- 贡献值1
- 好评度506
-
访问TA的空间加好友用道具
|
- QGraphicsItem* _this = toGraphicsItem();
- QRectF rect = _this->boundingRect();
- painter->save();
- const QTransform& formOrg = painter->transform();
- rect.setWidth(rect.width() * formOrg.m11());
- rect.setHeight(rect.height() * formOrg.m22());
- rect.moveTopLeft(QPointF(rect.x()*formOrg.m11(),rect.y()*formOrg.m22()));
- QTransform formNew( 1.0f, formOrg.m12(), formOrg.m13(),
- formOrg.m21(), 1.0f , formOrg.m23(),
- formOrg.m31(), formOrg.m32(), formOrg.m33());
- painter->setTransform(formNew,false);
- QPointF topLeft, topCenter, topRight, leftCenter, bottomLeft, bottomCenter, bottomRight, rightCenter;
- topLeft = rect.topLeft();
- topCenter = QPointF(rect.center().x(), rect.top());
- topRight = rect.topRight();
- leftCenter = QPointF(rect.left(), rect.center().y());
- bottomLeft = rect.bottomLeft();
- bottomCenter = QPointF(rect.center().x(), rect.bottom());
- bottomRight = rect.bottomRight();
- rightCenter = QPointF(rect.right(), rect.center().y());
- //绘制文字拖动点
- painter->setPen(Qt::NoPen);
- painter->setBrush(QBrush(Qt::yellow,Qt::SolidPattern));
- qreal sX = 3;
- qreal sY = 3;
- painter->drawRect(QRectF((topLeft - QPointF(1.5,1.5)), QSizeF(sX,sY) ));
- painter->drawRect(QRectF((topCenter - QPointF(1.5,1.5)), QSizeF(sX,sY) ));
- painter->drawRect(QRectF((topRight - QPointF(1.5,1.5)), QSizeF(sX,sY) ));
- painter->drawRect(QRectF((leftCenter - QPointF(1.5,1.5)), QSizeF(sX,sY) ));
-
- painter->drawRect(QRectF((bottomLeft - QPointF(1.5,1.5)), QSizeF(sX,sY) ));
- painter->drawRect(QRectF((bottomCenter - QPointF(1.5,1.5)), QSizeF(sX,sY) ));
- painter->drawRect(QRectF((bottomRight - QPointF(1.5,1.5)), QSizeF(sX,sY) ));
- painter->drawRect(QRectF((rightCenter - QPointF(1.5,1.5)), QSizeF(sX,sY) ));
- painter->restore();
这是我用来绘制item上面 8 个可以缩放大小的点。可是当item 旋转以后,8 个点的位置同样出现了问题。 不知道QPainter 的角度是怎样设置的,请高手指点。
|