• 欢迎浏览“String me = Creater\忠实的资深Linux玩家;”,请文明浏览,理性发言,有侵犯你的权益请邮件我(creater@vip.qq.com).
  • 把任何的失败都当作一次尝试,不要自卑;把所有的成功都想成是一种幸运,不要自傲。
  •    5年前 (2013-12-26)  QT |   4 条评论  29 
    文章评分 0 次,平均分 0.0

    简介

    在QT中,界面的几何尺寸获取可以通过如下图的示意来操作。
    Qt坐标变换
    在Qt中的一个绘画设备是一个可画的二维平面。QWidget、QPixmap、QPicture和QPrinter都是绘画设备。QPainter是一个可以在上面画的对象。
    原本坐标系的原点坐标是在绘图设备的左上角(0,0),X 向右增长, Y 向下增长。
    Qt坐标变换
    现在想把它变成,原点坐标在窗口中间,X 向右增长,Y向上增长,即是标准的数学中的坐标系。
    Qt坐标变换
    painter.setWindow(x,y,width(),height());
    用setwindow这个函数,表示什么意思。前两个参数左上角位置,后两个参数宽高。
    可以把变换好的坐标系在纸上画出来,左上角坐标传给前两个参数,后两个参数宽高可以算出来。
    width = 50-(-50) = 100;
    height = -50-50 = -100;
    就是用变换好的坐标系右下角坐标减去左上角坐标。那么就是

    painter.setWindow(-50,50,100,-100);

    一般使用如下方式

    painter.setWindow(-width()/2,height()/2,width(),-height());

    就可以达到目的了。

    和坐标变换相关的类

    这里是一些和坐标系统关系很近的类:
    1. QPoint是坐标系统中的单个二维点。Qt中处理点的绝大多数函数都可以接受QPoint参数或者两个整数参数,比如QPainter::drawPoint()。
    2. QSize是单个二维矢量。在内部,QPoint和QSize是一样的,但是一个点和一个大小不同,所以这两个类都存在。同样,绝大多数函数都可以接受一个QSize或者两个整数,比如QWidget::resize()。 
    3. QRect是一个二维的矩形。绝大多数函数都可以接受一个QRect或者四个整数,比如QWidget::setGeometry()。
    4. QRegion是点的一个任意组合,包括所有通常的组合操作,例如QRegion::intersect(),并且一些常用的函数返回一个矩形的列表,这个矩形的列表的集合等于一个区域。QRegion被例如QPainter::setClipRegion()、QWidget::repaint()和QPaintEvent::region()使用。
    5. QPainter是一个绘图的类。它可以用同样的代码在任何一个设备上绘画。设备中是存在差异的,QPrinter::newPage()是一个很好的例子,但QPainter可以对所有的设备按同一种方式工作。
    6. QPaintDevice是一个QPainter可以在上面绘画的设备。这里有两种都基于像素的内部的设备,和两种外部设备,QPrinter和QPicture(它把QPainter的命令都记录在一个文件或者其它的QIODevice,然后再运行它们)。其它的设备都可以被定义。

     

    除特别注明外,本站所有文章均为String me = "Creater\忠实的资深Linux玩家";原创,转载请注明出处来自http://unix8.net/home.php/2870.html

    关于

    发表评论

    暂无评论

    切换注册

    登录

    忘记密码 ?

    切换登录

    注册

    扫一扫二维码分享