• 3755阅读
  • 3回复

[提问]图形旋转 [复制链接]

上一主题 下一主题
离线zml2008
 

只看楼主 倒序阅读 楼主  发表于: 2012-08-22
本人想做一个小型画图软件,但在图形旋转方面碰到一些问题,向高手求解.

旋转句柄控制程序如下:
    case 7: {
        QPointF p = m_rect.center();
        p = mapToScene(p);
        qreal nDegrees = atan2(point.y() - p.y(), point.x() - p.x());
        nDegrees *= 180;
        nDegrees /= 3.1415926;
        nDegrees += 90;

        qreal x = m_rect.center().x();
        qreal y = m_rect.center().y();
        setTransform(QTransform().translate(x, y).rotate(nDegrees).translate(-x, -y));
        break;
    }
其中point为鼠标点击处scene坐标.
但在图形缩放后,在旋转时会出现异常.
望高手求解.

小马儿(248136139)  10:03:02
矩形大小句柄控制函数如下:
    itemPoint = mapFromScene(point);
      case 1:
        m_rect.setTopLeft(itemPoint);
        setRect(m_rect);
        break;
    case 2:
        m_rect.setBottomLeft(itemPoint);
        setRect(m_rect);
        break;
    case 3:
        m_rect.setTopRight(itemPoint);
        setRect(m_rect);
        break;
    case 4:
        m_rect.setBottomRight(itemPoint);
        setRect(m_rect);
        break;
    case 5:
        m_rect.setTop(itemPoint.y());
        setRect(m_rect);
        break;
    case 6:
        m_rect.setBottom(itemPoint.y());
        setRect(m_rect);
        break;
10:03:35
离线zml2008

只看该作者 1楼 发表于: 2012-08-22
回 楼主(zml2008) 的帖子
本人的猜测原因出在
setTransform(QTransform().translate(x, y).rotate(nDegrees).translate(-x, -y));
这行代码上,
通过移动矩形大小句柄后,会改变了矩形的中心点,导致了异常,但如何改正,比较困惑.
离线zml2008

只看该作者 2楼 发表于: 2012-08-22
望高手不吝指教,这里先谢过了.
离线jimiduoweiqi
只看该作者 3楼 发表于: 2012-08-25
楼主 你那个效果是怎么实现的啊?
快速回复
限100 字节
 
上一个 下一个