2012-02-10 1 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 이미지의 경계 상자에서 작동하기 때문에 당신이 그것을 회전하기 때문에 그것은,의, 경계 상자 '팽창'90DEG 단위 사이. 이미지를 표시 할 때 한 번만 크기를 설정하고 그 후에 만 ​​회전 시키면 어떨까요?