【发布时间】:2017-12-02 20:13:59
【问题描述】:
如何在不改变大小的情况下旋转 QPixmap 我使用此代码,但是当我旋转图像时,它会改变图像的大小。
头文件
#ifndef CUSTOMDIAL_H
#define CUSTOMDIAL_H
#include <QDial>
class CustomDial : public QDial
{
Q_OBJECT
public:
CustomDial(QWidget * parent = nullptr);
private:
virtual void paintEvent(QPaintEvent*) override;
};
#endif
CPP 文件
#include "Customdial.h"
#include <QGraphicsPixmapItem>
#include <QPainter>
#include <QColor>
#include <QPixmap>
CustomDial::CustomDial(QWidget* parent)
: QDial(parent)
{
// Default range
QDial::setRange(0,100);
}
void CustomDial::paintEvent(QPaintEvent*)
{
int a = QDial::sliderPosition();
QPainter painter(this);
//load pixmap
QPixmap pix(":/img/img/knob.png");
//rotate pixmap
QMatrix rm;
rm.rotate(a);
pix = pix.transformed(rm);
//draw pixmap
painter.drawPixmap(QPointF(0,0),
pix.scaled(QDial::height(),
QDial::height(),
Qt::KeepAspectRatio),
pix.rect().adjusted(1, 1, -1000, -1000) );
}
如何在不改变大小的情况下旋转 QPixmap 我使用此代码,但是当我旋转图像时,它会改变图像头文件的大小
【问题讨论】:
-
什么意思,解释清楚,你可以放一张你得到什么和你想得到什么的图像。
-
我刚刚为 QDial 创建了一个自定义类,以支持样式表以添加背景图像现在我的问题是,当您使用此代码在拨号器中旋转图像时,它会更改图像的大小,是否还有另一个旋转 Qpixmap 的方法?
-
显示您的代码,测试您的代码并查看如何修复它。
-
这是我的代码,我使用 png 旋转按钮获取资源