zoukankan      html  css  js  c++  java
  • 【Qt官方例程学习笔记】Analog Clock Window Example (画笔的平移/旋转/缩放应用)

    这个例子演示了如何使用QPainter的转换和缩放特性来简化绘图。

    值得学习的:

    定时器事件ID检查:

    在定时器事件中检查定时器id是比较好的实践。

    QPainter抗锯齿:

    We call QPainter::setRenderHint() with QPainter::Antialiasing to turn on antialiasing. This makes drawing of diagonal lines much smoother.

    画笔的平移/缩放:

          p->translate(width() / 2, height() / 2);
    
          int side = qMin(width(), height());
          p->scale(side / 200.0, side / 200.0);

    这段代码中, p是一个QPainter实例,使用translate()将画笔移动到中心点,然后通过scale将画笔以200*200的尺寸为基准缩放(比如绘图区域大小是400*400,则缩放因子为2。这样就是绘制的时候,大小固定为200*200,绘制后,缩放到400*400).

    画笔的轮廓和填充:

          p->setPen(Qt::NoPen);
          p->setBrush(hourColor);

    画笔状态的保存和恢复,旋转,绘制多边形:

          QTime time = QTime::currentTime();
    
          p->save();
          p->rotate(30.0 * ((time.hour() + time.minute() / 60.0)));
          p->drawConvexPolygon(hourHand, 3);
          p->restore();

    这段代码,通过save和restore,还原了旋转之前的画笔的变换矩阵,后面的绘制不会被这次旋转所影响。

     

  • 相关阅读:
    用户体验评价
    第十四周进度总结
    寻找水王
    第十三周进度总结
    第一阶段意见评论
    梦断代码阅读笔记02
    第十二周进度总结
    冲刺(第十天)
    单词统计续
    冲刺(第九天)
  • 原文地址:https://www.cnblogs.com/pplxlee/p/11009539.html
Copyright © 2011-2022 走看看