• 5875阅读
  • 3回复

Qt4.4.3 Tutorial 9 :加农炮的问题 [复制链接]

上一主题 下一主题
离线priestmoon
 

只看楼主 倒序阅读 楼主  发表于: 2008-10-08
— 本帖被 XChinux 执行加亮操作(2008-10-12) —
Qt4.4.3 Tutorial 9教程文档片段摘录:


t9/cannon.cpp
p的类型为QPainter。
        p.translate( 0, rect().bottom() );
QPainter::translate()函数转化QPainter的坐标系统,比如,它通过偏移谅来移动。这里我们设置窗口部件的左下角为(0,0)。x和y的方向没有改变,比如,窗口部件中的所有y坐标现在都是负数(请看坐标系统获得有关Qt的坐标系统更多的信息。)
        p.drawPie( QRect(-35, -35, 70, 70), 0, 90*16 );


问题:
按照原来默认左上顶点为原点时,QRect(int x, int y, int width, int height)中,x代表这个矩形左上顶点距离窗口左缘的垂直距离, y代表距离窗口上缘的垂直距离, width和height代表矩形的长和宽。
以上理解是否有误?
如果无误,请解释:
(1) translate函数将窗口左下顶点设为原点(0, 0)之后, 为什么说所有y坐标现在都是负数?
(2) QRect(-35, -35, 70, 70)各数值所代表的意义?

离线chaoscxm
只看该作者 1楼 发表于: 2008-10-08
默认坐标表示规则是上面小,下面大,左边小,右边大
原点设置为左下角后,窗口的东西相对在原点的右上方,所以x坐标>0,y坐标<0
QRect(-35, -35, 70, 70)
标示顶点在-35,-35,长宽为70,70
[ 此贴被chaoscxm在2008-10-08 15:33重新编辑 ]
帖子签名(将在每个帖子下方显示)
离线lazybone
只看该作者 2楼 发表于: 2008-10-08
QRect(矩形左上角x,矩形左上角y,长,宽)
离线sunday1118
只看该作者 3楼 发表于: 2009-05-15
经过我一下午的实验 楼上的楼上仁兄说的好像不大对 Qt中的坐标系和VC中应该是一样的 默认左上角(0,0)往左X正的 往下Y正的
经过 p.translate(0,rect().bottom());转换后 (0,0)点变为了左下角 而X向右是正的 Y向上是负的
所以QRect(-35,-35,70,70)在这个时候的坐标系中正好画出了一个以(0,0)为中心 长宽都为70的正方形 配合上drawPie函数 就可以再当前坐标系中画出一个四分之一圆 也就是教程中的效果 如果不转换的话 使用p.drawPie(QRect(-35,252,70,70),0,90*16); 仍然可以画出同样的效果 252这个坐标是根据rect().bottom()=287得来的 大家可以再试试 唉 这么一个函数 让我迷糊了一个下午
快速回复
限100 字节
 
上一个 下一个