Qt는 아날로그 시계 예를 회전으로 지금
:
http://qt-project.org/doc/qt-5/qtwidgets-widgets-analogclock-example.html
아마 QPixmap
의 회전하기 전에, 선 그리기보십시오. 선이 제자리에 있고 드로잉이 올바르게 그곳에서 뒤로 작업하십시오.
업데이트 :
일부 이미지 회전 용 샘플 코드.
widget.cpp
#include "widget.h"
#include <QPainter>
#include <QTimer>
#include <QTime>
Widget::Widget(QWidget *parent) :
QWidget(parent)
{
time.restart();
this->resize(256, 256);
// both images are 256x256 in this example
bg.load("./images/bg.png");
second_hand.load("./images/second_hand.png");
QTimer * t = new QTimer;
t->setSingleShot(false);
t->setInterval(15);
QObject::connect(t,SIGNAL(timeout()), this, SLOT(update()));
t->start();
}
void Widget::paintEvent(QPaintEvent * e)
{
QPainter p(this);
p.drawPixmap(QPoint(0,0),bg);
qreal seconds = ((qreal)(time.elapsed() % 60000))/1000;
p.translate(this->width()/2, this->height()/2);
p.rotate(seconds/60*360);
p.drawPixmap(QPoint(-this->width()/2, -this->height()/2),second_hand);
}
MAIN.CPP하는 데 도움이
#include "widget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}
희망
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QPaintEvent>
#include <QPixmap>
#include <QTime>
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
signals:
public slots:
void paintEvent(QPaintEvent *);
private:
QPixmap bg;
QPixmap second_hand;
QTime time;
};
#endif // WIDGET_H
widget.h.
첫 번째 이미지는 회전 적용없이 전체 포인터를 표시하고 두 번째 이미지는 회전의 적용 후 포인터의 작은 부분 만 표시합니다. 인상은 그가 똑같이 회전 할 때 포인터의 한 부분 만 가져 가고 있다는 것입니다. –