вращение 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.

Спасибо


person dev    schedule 10.02.2012    source источник


Ответы (1)


Это потому, что scaled работает с ограничивающей рамкой изображения, поскольку вы вращаете его, ограничительная рамка «набухает» между шагом 90 градусов. Почему бы просто не установить масштаб один раз при показе изображения, а затем только поворачивать его?

person cmannett85    schedule 10.02.2012