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,还原了旋转之前的画笔的变换矩阵,后面的绘制不会被这次旋转所影响。

     

  • 相关阅读:
    J2EE第四周
    J2EE 第三周
    jsf简单入门
    Applrt和Ajax
    hello.java分析
    filter用户例子
    分析LogFilter
    理解session
    关于XML
    企业级应用和互联网应用的区别
  • 原文地址:https://www.cnblogs.com/pplxlee/p/11009539.html
Copyright © 2011-2022 走看看