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

     

  • 相关阅读:
    vmalloc详解
    SSD 页、块、垃圾回收
    ext2文件系统
    slub分配object
    slab分配object
    ACCESS_ONCE的作用
    CFS理论模型
    代码规范
    About Me
    SDOI R2 咕咕记
  • 原文地址:https://www.cnblogs.com/pplxlee/p/11009539.html
Copyright © 2011-2022 走看看