Qt学习例子11——Transformedsmiley
2011-04-08 13:15
330 查看
Transformedsmiley工程主要简述旋转、缩放、平移操作,还有2.5D的操作
程序效果图:
程序依下面的图所作:
#include <QtGui/QApplication>
#include <QGraphicsView>
#include <QGraphicsScene>
#include <QGraphicsEllipseItem>
QGraphicsItem *addSmiley() {
QPen thickPen(Qt::black);
thickPen.setWidth(2);
// add face
QGraphicsEllipseItem *face = new QGraphicsEllipseItem(QRect(-50, -50, 100, 100));
face->setPen(Qt::NoPen);
face->setBrush(Qt::yellow);
// add eyes
QGraphicsEllipseItem *leftEye = new QGraphicsEllipseItem(QRectF(-6, -12, 12, 24), face);
leftEye->setPen(thickPen);
leftEye->setBrush(Qt::white);
leftEye->setPos(-15, -25);
QGraphicsEllipseItem *rightEye = new QGraphicsEllipseItem(QRectF(-6, -12, 12, 24), face);
rightEye->setPen(thickPen);
rightEye->setBrush(Qt::white);
rightEye->setPos(15, -25);
// add smile
QPainterPath smileArc;
QRect rect(-33, -15, 66, 50);
smileArc.arcMoveTo(rect, 0);
smileArc.arcTo(rect, 0, -180);
QGraphicsPathItem *smile = new QGraphicsPathItem(smileArc, face);
smile->setPen(thickPen);
return face;
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QGraphicsView w;
QGraphicsScene scene;
w.setScene(&scene);
QGraphicsItem *smiley1 = addSmiley();
scene.addItem(smiley1);
QGraphicsItem *smiley2 = addSmiley();
scene.addItem(smiley2);
QGraphicsItem *smiley3 = addSmiley();
scene.addItem(smiley3);
// enter your code here
smiley1->setScale(2);
smiley1->translate(-200,0);
smiley2->rotate(-45);
//smiley3->setTransform(QTransform().translate(50,50).rotate(90).translate(-50, -50));
smiley3->setTransform(QTransform().rotateRadians(70,Qt::XAxis)); //2.5D视图
smiley3->translate(200,0);
w.setRenderHint(QPainter::Antialiasing);
w.show();
return a.exec();
}
程序效果图:
相关文章推荐
- Qt学习例子7——fileaccess
- Qt学习 之 Socket通信(世界上最简单的例子了)
- QT中QTreeView学习的两个例子
- Qt多线程学习-用例子来理解多线程(转)
- Qt学习 之 Socket通信(一个简单的例子)
- Qt学习 之 Socket通信(一个简单的例子)
- Mule ESB 学习笔记(11)Web Service Proxy(这里是一个可以正常运行的例子)
- Qt学习例子8——filechooser
- Qt学习 之 Socket通信(世界上最简单的例子了)
- Qt学习例子9——smile3
- Qt多线程学习-用例子来理解多线程(转)
- QT5.4 例子学习-01-Application Example
- qt练习11 鼠标,按键,滚轮事件学习
- Qt学习例子10——Compsegraphicsitem
- Qt多线程学习-用例子来理解多线程
- Qt学习之旅---3.文件处理,小例子文本编辑器
- Qt学习例子12——Movablesimley
- [Q学习]11 Qt事件系统——过滤事件
- Qt 学习之路 2(11):布局管理器
- Qt学习例子13——Customitem