QT:利用QImage实现图片不失真缩放,并在屏幕中心缩放
QImage实现图片不失真缩放不失真缩放方法利用QImage读取图片,scale函数实现缩放。scaled(width, height, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);第一、二参数代表缩放后的尺寸,第三个参数代表忽略比例,也可调用IgnoreAspectRatio保持长宽比例,第四个参数代表平滑处理,使图片缩小时不失真。屏幕中心缩
·
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;
}
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献1条内容
所有评论(0)