标题:Qt圆形透明图片(图像)不断旋转的效果怎么弄?
作者:ustone
日期:2018-05-31 20:39
内容:
我试了一下,效果不理想,主要是图片旋转以后包围的矩形大小变了,为了看效果,先用不透明图片:
主要源代码如下:
#include "dialog.h"#include "ui_dialog.h"#include
Dialog::Dialog(QWidget *parent) :QDialog(parent),ui(new Ui::Dialog){ui->setupUi(this);pix=QPixmap("./res/e.jpg");ui->label->setScaledContents(true);ui->label->setPixmap(pix);timer=new QTimer(this);timer->setInterval(50);connect(timer,SIGNAL(timeout()),this,SLOT(onTimer()));angle=[color ..
#1 [ustone 05-31 20:41]
主要源代码如下:
#include "dialog.h"
#include "ui_dialog.h"
#include
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
pix=QPixmap("./res/e.jpg");
ui->label->setScaledContents(true);
ui->label->setPixmap(pix);
timer=new QTimer(this);
timer->setInterval(50);
connect(timer,SIGNAL(timeout()),this,SLOT(onTimer()));
angle=0;
}
Dialog::~Dialog()
{
delete ui;
}
void Dialog::on_pushButton_clicked()
{
if(timer->isActive())
timer->stop();
else
timer->start();
}
void Dialog::onTimer()
{
angle+=2;
angle%=360;
QMatrix matrix;
matrix.rotate(angle);
QPixmap rpix;
rpix=pix.transformed(matrix);
ui->label->setPixmap(rpix);
}
#2 [ustone 05-31 23:31]
用了一个办法,根据变形后的图片,不断改变label的大小和位置(保持中心位置不变)。图片显示不缩放。
#3 [never_forget 06-01 17:08]
你这个是什么问题啊 ?你是不是想让外面那个白色的框看不见啊,你改成 PNG 不就行了嘛~
#4 回 never_forget 的帖子 [ustone 06-01 19:34]
never_forget:你这个是什么问题啊 ?你是不是想让外面那个白色的框看不见啊,你改成 PNG 不就行了嘛~ (2018-06-01 17:08)
原来label是固定大小的,图片旋转以后大小就变了。现在使label随着旋转图片的大小而变,保持中心位置,就解决了。
#5 [stlcours 06-01 21:04]
https://blog.csdn.net/goforwardtostep/article/details/55224578