|
本帖最后由 caiwei_cs 于 2015-4-1 15:15 编辑
书中10-3的例子,前面一部分只用
painter.setWindow(-50, -50, 100, 100);
那个我看图明白了。但是后面那个用viewport的实在不明白。为什么会成为正方形,我对viewport的作用也没看懂。(窗口本来是400*300)- void Widget::paintEvent(QPaintEvent *event)
- {
- QPainter painter(this);
- int side = qMin(width(), height());
- int x = (width() / 2);
- int y = (height() / 2);
- qDebug()<<x<<y<<side;
- //设置视口
- painter.setViewport(x, y, side, side);
- painter.setWindow(0, 0, 100, 100);
- painter.setBrush(Qt::green);
- painter.drawRect(0, 0, 20, 20);
- }
复制代码 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);坐标比例会怎么变?
|
|