QT:利用QImage实现图片不失真缩放,并在屏幕中心缩放

QImage实现图片不失真缩放

  • 不失真缩放方法
    利用QImage读取图片,scale函数实现缩放。
scaled(width, height, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); 

第一、二参数代表缩放后的尺寸,第三个参数代表忽略比例,也可调用IgnoreAspectRatio保持长宽比例,第四个参数代表平滑处理,使图片缩小时不失真。

  • 屏幕中心缩放
    利用 QLabel显示图片,QLabel是画布窗口showImageWidget的子部件,在QLabel上添加图片后,平移QLabel至屏幕中心即可。
  • 完整代码
void THM_CT::wheelEvent(QWheelEvent * event)
{
    m_currentIndex += event->delta() / 500.0;
    qDebug() << m_currentIndex;
    QImage* image = new QImage;
    *image = pixmapScale(*m_currentImage, m_currentIndex);
    m_showImageWidget->show();
    m_showImageLabel->setPixmap(QPixmap::fromImage(*image));
    m_showImageLabel->resize(image->width(), image->height());
    m_showImageLabel->move(m_drawScreen_width / 2 - image->width() / 2, m_drawScreen_height / 2 - image->height() / 2);
}
QImage THM_CT::pixmapScale(const QImage& image, const double & index)
{
    QImage r_image;
    r_image = image.scaled(image.width()*index, image.height()*index, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
    return r_image;
}



推荐阅读更多精彩内容