Qt之QPainter的座標變換:QTransform

#include <QTransform>
void Widget::paintEvent(QPaintEvent *)
{
    QPainter painter(this);
    painter.translate(100, 100);   //座標向前平移
    painter.drawLine(QPoint(0, 0), QPoint(100, 100));
    painter.translate(-100, -100);
    painter.setPen(QPen(Qt::red));
    painter.drawLine(QPoint(0, 0), QPoint(50, 50));
    painter.drawLine(QPoint(50, 50), QPoint(100, 50));
    painter.rotate(90);
    painter.setPen(QPen(Qt::green));
    painter.drawLine(QPoint(50, -100), QPoint(100, -100));

     //QTransform是對translate、rotate、scale等座標操做的封裝
    QTransform transform;
   // transform.translate(20, 20);
    transform.rotate(-90);
    transform.scale(.5, .5);
    painter.setTransform(transform, true); //truebiao's表示疊加以前的座標
    painter.drawLine(QPoint(50, 50), QPoint(60, 10));
}
相關文章
相關標籤/搜索