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