赞
踩
1、在绘制图形中有三个坐标系:逻辑坐标系,物理坐标系,应用程序坐标系(此坐标系为便于理解是我杜撰的);
2、 窗口(window) 是逻辑坐标系中的一个投影块,视口(viewport) 是物理坐标系中的一个投影块;
3、默认情况下逻辑坐标系和物理坐标系是重合的,原点在应用程序窗口的左上角,默认下窗口和视口同样是重合的也在各自坐标系原点,它们的矩形宽高是应用程序的宽高;
4、QPainter绘制任何图形首先是依据逻辑坐标系的坐标点去绘制,在通过“窗口投影块”四角映射投影(窗口和视口矩形不一致就会存在缩放概念)到物理坐标系中的“视口投影块”的四角,在以物理坐标系的原点对上应用程序坐标系原点把视口内的图形显示在程序中 (重点:窗口和视口永远是四角对应,如果窗口大于视口那么图形就会缩小,如果窗口小于视口那么图形就会被放大,在这里视口投影块是基准);
p.setWindow(50,50,300,300); //设置窗口
p.setViewport(0,50,400,400); //设置视口
p.drawRect(60,60,80,80); //绘图
1)在投影的过程中不需要管两个坐标系,只需要将窗口左上角为起始点包括绘制的图形一起移动到视口左上角;
2)将视口大小为基准尺寸,把窗口携带图形以左上角为起始点缩放到视口尺寸即可。
说明:这个过程是便于理解作者杜撰的一个步骤,其实缩放步骤完成后,物理坐标原点就是窗口显示原点了。
以物理坐标系原点为起始点把图形移动到应用程序窗口中显示(应用程序原点是在显示区的左上角)。
viewprotANDwindow
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。