123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 | // Copyright (C) 2021 The Qt Company Ltd.// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause#include <QApplication>#include <QtMath>#include <QPainter>#include <QVBoxLayout>#include <QWidget>class SimpleTransformation :public QWidget {voidpaintEvent(QPaintEvent *) override;};//! [0]voidSimpleTransformation::paintEvent(QPaintEvent *){ QPainter painter(this); painter.setPen(QPen(Qt::blue,1,Qt::DashLine)); painter.drawRect(0,0,100,100); painter.rotate(45); painter.setFont(QFont("Helvetica",24)); painter.setPen(QPen(Qt::black,1)); painter.drawText(20,10,"QTransform");}//! [0]class CombinedTransformation :public QWidget {voidpaintEvent(QPaintEvent *) override;};//! [1]voidCombinedTransformation::paintEvent(QPaintEvent *){ QPainter painter(this); painter.setPen(QPen(Qt::blue,1,Qt::DashLine)); painter.drawRect(0,0,100,100); QTransform transform; transform.translate(50,50); transform.rotate(45); transform.scale(0.5,1.0); painter.setTransform(transform); painter.setFont(QFont("Helvetica",24)); painter.setPen(QPen(Qt::black,1)); painter.drawText(20,10,"QTransform");}//! [1]class BasicOperations :public QWidget {voidpaintEvent(QPaintEvent *) override;};//! [2]voidBasicOperations::paintEvent(QPaintEvent *){const double a =qDegreesToRadians(45.0);double sina =sin(a);double cosa =cos(a); QTransform scale(0.5,0,0,1.0,0,0); QTransform rotate(cosa, sina, -sina, cosa,0,0); QTransform translate(1,0,0,1,50.0,50.0); QTransform transform = scale * rotate * translate; QPainter painter(this); painter.setPen(QPen(Qt::blue,1,Qt::DashLine)); painter.drawRect(0,0,100,100); painter.setTransform(transform); painter.setFont(QFont("Helvetica",24)); painter.setPen(QPen(Qt::black,1)); painter.drawText(20,10,"QTransform");}//! [2]intmain(int argc,char**argv){ QApplication app(argc, argv); QWidget widget; SimpleTransformation *simpleWidget =new SimpleTransformation; CombinedTransformation *combinedWidget =new CombinedTransformation; BasicOperations *basicWidget =new BasicOperations; QVBoxLayout *layout =newQVBoxLayout(&widget); layout->addWidget(simpleWidget); layout->addWidget(combinedWidget); layout->addWidget(basicWidget); widget.show(); widget.resize(130,350);return app.exec();}
|