无需缩放即可旋转QPixmap

时间:2012-02-10 05:21:44

标签: qt qpainter qpixmap

我正在覆盖QDial的绘制事件并显示图像以使其焕然一新。现在我想根据当前值旋转图像。我正在使用以下代码。

m_PixmapFound=m_Qpixmap.load(fileName);

if (m_PixmapFound)
{

            QMatrix rm;
            rm.rotate(value()*5);

            m_Qpixmap = m_Qpixmap.transformed(QPixmap::trueMatrix(rm,this->width(),this->height()));
            m_Qpixmap = m_Qpixmap.scaled(QSize(163,163),Qt::KeepAspectRatio,Qt::SmoothTransformation);

            QPainter  myPainter(&m_Qpixmap);
}

图像会旋转,但在不同的刻度值上会缩放到不同的尺寸。因此,当我旋转QDial时,表盘正在增长和缩小。

请告诉我如何解决此问题。

有一种方法是获取每个QDial值的图像并根据旋钮值更新图像,但我不想这样做,因为旋钮范围是0-1000。

由于

1 个答案:

答案 0 :(得分:1)

这是因为scaled在图像的边界框上运行,因为你正在旋转它,边界框在90度增量之间“膨胀”。为什么不在显示图像时设置一次比例,然后只在之后旋转呢?