找回密码
 立即注册
收起左侧

QPainter viewport 的问题 书10.3节,10-3的例子

1
回复
4075
查看
[复制链接]
累计签到:2 天
连续签到:1 天
来源: 2015-4-1 09:53:44 显示全部楼层 |阅读模式

马上注册,查看详细内容!注册请先查看:注册须知

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 caiwei_cs 于 2015-4-1 15:15 编辑

书中10-3的例子,前面一部分只用
painter.setWindow(-50, -50, 100, 100);
那个我看图明白了。但是后面那个用viewport的实在不明白。为什么会成为正方形,我对viewport的作用也没看懂。(窗口本来是400*300)
  1. void Widget::paintEvent(QPaintEvent *event)
  2. {
  3.     QPainter painter(this);
  4.     int side = qMin(width(), height());
  5.     int x = (width() / 2);
  6.     int y = (height() / 2);
  7.     qDebug()<<x<<y<<side;
  8.     //设置视口
  9.     painter.setViewport(x, y, side, side);
  10.     painter.setWindow(0, 0, 100, 100);
  11.     painter.setBrush(Qt::green);
  12.     painter.drawRect(0, 0, 20, 20);

  13. }
复制代码
2.setwindow 和setviewport都能变化坐标。变了两次,感觉作用重复?
如果两个都有,应该 先看哪个? 及:逻辑坐标->?->?->物理坐标

我想了一下是不是这样:
本来qwidget窗口为(400*300)原点在(0,0)

先看painter.setWindow(0, 0, 100, 100);
窗口为(100*100),原点在(0,0); 这里的1一个横坐标相当于4个原始点,纵坐标相当于3个。

再看painter.setViewport(x, y, side, side);
原点变到了(x, y)就是窗口中间。原点的变动我都明白了。
然后就是坐标变动?这里给了setViewport(x, y, side, side);坐标比例会怎么变?

回复

使用道具 举报

累计签到:2 天
连续签到:1 天
2015-4-2 09:17:55 显示全部楼层
自己顶一下。等版主。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了