如果有一些点(Point),组成一个集合,如何获取这些点的范围( rect )。

方法1:

最通用的方法,就是获取这些点集合的最左上角的点,和最右下角的点 的水平和垂直方向上的焦点;

可以通过一个比较简单的算法实现:

1: 可以通过冒泡排序,做四次, 1,获取所有点 的x方向上的最小点;2,获取所有点 的x方向上的最大点, 3,获取所有点 的y方向上的最小点;4,获取所有点 的x方向上的最大点;

或者每一个点都做一次4个方向上的比较,保留最大值;

方法2:

2:在Qt中,有一个比较简单的方法:

QRectF QPainterPath::boundingRect() const;

QPainterPath不支持添加点,但是支持添加QPolygon,而QPolygon,就是点集合的链接,在这里,可以忽略链接了;

方法:

QRectF GetPointsRect( QVector<QPoint>  & vectpoint )

{

QPolygon polygon( vectpoint );

QPainterPath PainterPath;
PainterPath.addPolygon( polygon );

QRectF rect = PainterPath.boundingRect();

return rect;

}

这里给出QGraphicsLineItem获取rect的实现:

QRectF QGraphicsLineItem::boundingRect() const
{
    Q_D(const QGraphicsLineItem);
    if (d->pen.widthF() == 0.0) {
        const qreal x1 = d->line.p1().x();
        const qreal x2 = d->line.p2().x();
        const qreal y1 = d->line.p1().y();
        const qreal y2 = d->line.p2().y();
        qreal lx = qMin(x1, x2);
        qreal rx = qMax(x1, x2);
        qreal ty = qMin(y1, y2);
        qreal by = qMax(y1, y2);
        return QRectF(lx, ty, rx - lx, by - ty);
    }
    return shape().controlPointRect();

}

网址:http://blog.csdn.net/chinabinlang/article/details/18764409

获取 点集合 的 rect相关推荐

  1. java取list中最大数值_Java后台通过Collections获取list集合中最大数,最小数代码

    我就废话不多说了,大家还是直接看代码吧~ package com.jalor; import java.util.ArrayList; import java.util.Collections; im ...

  2. Atitit利用反射获取子类 集合 以及继承树

    Atitit利用反射获取子类 集合 以及继承树 想从父类往下找子类的确是不可能的,要知道只要类不是final的话谁都有继承它的自由不需要事前通知父类. Eclipse实现不是重父类开始找而是重子类往回 ...

  3. unity 获得所有的tag_Unity3D_06_根据Transform、GameObject和Tag获取子对象集合

    1 usingSystem;2 usingSystem.Collections.Generic;3 usingSystem.Linq;4 usingSystem.Text;5 usingUnityEn ...

  4. 【Groovy】map 集合 ( 根据 Key 获取 map 集合中对应的值 | map.Key 方式 | map.‘Key’ 方式 | map[‘Key’] 方式 | 代码示例 )

    文章目录 一.根据 Key 获取 map 集合中对应的值 1.通过 map.Key 方式获取 map 集合中的值 Value 2.通过 map.'Key' 方式获取 map 集合中的值 Value 3 ...

  5. 【Groovy】map 集合 ( map 集合定义 | 通过 getClass 函数获取 map 集合的类型 | 代码示例 )

    文章目录 一.map 集合定义 二.获取 map 集合类型 三.代码示例 一.map 集合定义 声明键值对 , 其中 键 Key 可以 不使用引号 , 可以 使用单引号 '' , 也可以 使用双引号 ...

  6. java List最大_在java中获取List集合中最大的日期时间操作

    取list集合中最大的日期, 可以用date max = collections.max(datelist);, 传入一个日期集合, 就可以获取, 工作中有这个需求, 就查找到这个, 代码如下 } e ...

  7. java 大数 list_Java后台通过Collections获取list集合中最大数,最小数代码

    Java后台通过Collections获取list集合中最大数,最小数代码,平均数,偏差,标准,总和,代码 Java后台通过Collections获取list集合中最大数,最小数代码 易采站长站,站长 ...

  8. java集合中取最大值_Java后台通过Collections获取list集合中最大数,最小数代码

    我就废话不多说了,大家还是直接看代码吧~ package com.jalor; import java.util.ArrayList; import java.util.Collections; im ...

  9. java中获取一个集合(Set)的子集的方法

    想获取一个链表(List)的子集,可以直接使用subList方法,但是集合(Set)并没有类似的subSet的方法. 有些应用场景需要获取一个集合的子集,这时候该怎么做呢? 最容易想到的方式,就是构造 ...

  10. java 中遍历双列集合_获取单列集合,双列集合,数组的Stream流对象以及简单操作...

    获取流对象 获取单列集合,双列集合,数组的流对象 单列集合获取流对象: 1.java.util.Collection接口中加入了default方法stream()获取流对象,因此其所有实现类均可通过此 ...

最新文章

  1. nginx将泛解析的匹配域名绑定到子目录配置方法
  2. FMS4.5( Adobe Flash Media Server4.5)流媒体服务器搭建
  3. Binder fuzz安全研究
  4. Zabbix3.4安装详细步骤
  5. sublime 自定义快捷键
  6. 获取某一条_想获取流量?这几种工具是必须要有的,能帮你获客快人一步!
  7. 提升访问github.com网址的速度
  8. linux 命令之 ps
  9. 插槽作用域渲染按钮开关 ~ 满满的干货哦
  10. 代码证年审 年报 附文档 短消息类服务接入代码 电信业务资源综合管理系统用户手册-码号年报 (码号使用单位)
  11. linux模拟lcd显示文字,求助 armlinux中实现lcd显示
  12. mysql编码utf8改为g_修改MySQL的编码为UTF8
  13. linux下vi命令大全,linux系统vi命令详解
  14. cydia所有中文源地址_Cydia中文源大全.doc
  15. java ts视频文件转mp4格式在线求助
  16. qt:qt5.12警告消除大法之 warning: zero as null pointer constant
  17. 《船舶流体力学》知识点总结——1.绪论
  18. html中去除下划线,下划线怎么取消?
  19. java中的instance_Java基础之Class类与instance关键字
  20. Pycharm安装FLASK出现错误,无法安装

热门文章

  1. VMware Workstation Pro 虚拟机启动失败 cpu虚拟化开启
  2. tkinter打包为exe后找不到图片 tkinter_TclError:couldn‘t open “a.png“ no such file or directory
  3. numpy:数组累乘
  4. 车联网群雄逐鹿,通信业将如何掘金?
  5. opencv: C++实现将彩色图转换为灰色图
  6. 一台计算机数据丢失与恢复,数据丢失后的六种计算机恢复方法
  7. 在nginx中设置三级域名
  8. 韩寒诉百度文库侵权案分析
  9. tabbar 图片太大了怎么办_设置TabBar分栏控制器上图片的大小问题
  10. LOJ10102旅游航道