2012-02-10 65 views
1

我重写了QDial的绘画事件并显示图像以使其焕然一新。现在我想根据当前值旋转图像。我正在使用下面的代码。旋转QPixmap无缩放

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

这是因为scaled上的图像的边框工作,因为你旋转它,90个增量之间的边界框“膨胀”。为什么不在显示图像时只设置一次刻度,然后只在此之后旋转刻度?