【问题标题】:rotating QPixmap without scaling旋转 QPixmap 而不缩放
【发布时间】:2012-02-10 05:21:43
【问题描述】:

我正在覆盖 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。

谢谢

【问题讨论】:

    标签: qt qpainter qpixmap


    【解决方案1】:

    这是因为scaled 对图像的边界框进行操作,因为您正在旋转它,所以边界框会在 90 度增量之间“膨胀”。为什么不只是在显示图像时设置一次比例,然后再旋转它?

    【讨论】:

      猜你喜欢
      • 2016-10-09
      • 2012-05-31
      • 1970-01-01
      • 1970-01-01
      • 2012-03-20
      • 1970-01-01
      • 1970-01-01
      • 2016-09-04
      • 1970-01-01
      相关资源
      最近更新 更多