QT_QPainter,qt坐标系统,viewport

本文介绍了QT中的QPainter如何处理window和viewport坐标系统,强调了在可变大小的widget中,如何设定绘图区域为最大正方形。通过translate()和scale()方法调整坐标系统,确保逻辑坐标与物理坐标的适配,以实现绘图的重用和一致性。同时,讨论了paintDevice、begin()、end()在绘图过程中的作用,以及如何避免锯齿效果。
摘要由CSDN通过智能技术生成

QPainter

window,viewport

  • window()是 painter的 (逻辑坐标系统), 他是 你进行绘图的 标准;
    因为(逻辑坐标系统是你指定的), 即使在 物理的 不同分辨率的 坐标系统里, 他们对应的 “逻辑坐标系统”, 都是相同的
  • viewport()是 painter的 (实际 物理坐标系统), 表示: painter 可以控制的 区域!!

在默认情况下, viewport() == window();


看一个需求:

  • 对于一个 可改变大小的widget, 我们指定 他中心的 (最大的)正方形即该正方形的len = min( width, height) 为 painter的绘图区域

比如说, 该widget的size是: 100, 50, 那么, 这个(最大正方形)的 位置是: (25, 0) (50, 50)

而默认情况下, painter.viewport() == { (0, 0), (100, 50)} 即, 整个widget区域

这是不可以的; 我们需求是: 让painter 只可以影响到, 这个正方形;

即:

void AnalogClock::paintEvent(QPaintEvent *){
   
    QPainter painter( this);
    {
    // viewport
        int len = qMin( this->width(), this->height());
        QRect rect_viewport = QRect( (this->
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值