вращение QPixmap без масштабирования - PullRequest
1 голос
/ 10 февраля 2012

Я переопределяю событие рисования 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 I, циферблат растет и сужается.

Пожалуйста, дайте мне знать, как можно решить эту проблему.

Существует один способ - получить изображение для каждого значения QDial и обновить изображение в соответствии со значением регулятора, но я не хочу этого делать, поскольку диапазон регулятора составляет 0-1000.* Спасибо

1 Ответ

1 голос
/ 10 февраля 2012

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

...