您的位置:首页 > 编程语言 > Qt开发

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