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;
}


 

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐