获取 点集合 的 rect
如果有一些点(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相关推荐
- java取list中最大数值_Java后台通过Collections获取list集合中最大数,最小数代码
我就废话不多说了,大家还是直接看代码吧~ package com.jalor; import java.util.ArrayList; import java.util.Collections; im ...
- Atitit利用反射获取子类 集合 以及继承树
Atitit利用反射获取子类 集合 以及继承树 想从父类往下找子类的确是不可能的,要知道只要类不是final的话谁都有继承它的自由不需要事前通知父类. Eclipse实现不是重父类开始找而是重子类往回 ...
- unity 获得所有的tag_Unity3D_06_根据Transform、GameObject和Tag获取子对象集合
1 usingSystem;2 usingSystem.Collections.Generic;3 usingSystem.Linq;4 usingSystem.Text;5 usingUnityEn ...
- 【Groovy】map 集合 ( 根据 Key 获取 map 集合中对应的值 | map.Key 方式 | map.‘Key’ 方式 | map[‘Key’] 方式 | 代码示例 )
文章目录 一.根据 Key 获取 map 集合中对应的值 1.通过 map.Key 方式获取 map 集合中的值 Value 2.通过 map.'Key' 方式获取 map 集合中的值 Value 3 ...
- 【Groovy】map 集合 ( map 集合定义 | 通过 getClass 函数获取 map 集合的类型 | 代码示例 )
文章目录 一.map 集合定义 二.获取 map 集合类型 三.代码示例 一.map 集合定义 声明键值对 , 其中 键 Key 可以 不使用引号 , 可以 使用单引号 '' , 也可以 使用双引号 ...
- java List最大_在java中获取List集合中最大的日期时间操作
取list集合中最大的日期, 可以用date max = collections.max(datelist);, 传入一个日期集合, 就可以获取, 工作中有这个需求, 就查找到这个, 代码如下 } e ...
- java 大数 list_Java后台通过Collections获取list集合中最大数,最小数代码
Java后台通过Collections获取list集合中最大数,最小数代码,平均数,偏差,标准,总和,代码 Java后台通过Collections获取list集合中最大数,最小数代码 易采站长站,站长 ...
- java集合中取最大值_Java后台通过Collections获取list集合中最大数,最小数代码
我就废话不多说了,大家还是直接看代码吧~ package com.jalor; import java.util.ArrayList; import java.util.Collections; im ...
- java中获取一个集合(Set)的子集的方法
想获取一个链表(List)的子集,可以直接使用subList方法,但是集合(Set)并没有类似的subSet的方法. 有些应用场景需要获取一个集合的子集,这时候该怎么做呢? 最容易想到的方式,就是构造 ...
- java 中遍历双列集合_获取单列集合,双列集合,数组的Stream流对象以及简单操作...
获取流对象 获取单列集合,双列集合,数组的流对象 单列集合获取流对象: 1.java.util.Collection接口中加入了default方法stream()获取流对象,因此其所有实现类均可通过此 ...
最新文章
- nginx将泛解析的匹配域名绑定到子目录配置方法
- FMS4.5( Adobe Flash Media Server4.5)流媒体服务器搭建
- Binder fuzz安全研究
- Zabbix3.4安装详细步骤
- sublime 自定义快捷键
- 获取某一条_想获取流量?这几种工具是必须要有的,能帮你获客快人一步!
- 提升访问github.com网址的速度
- linux 命令之 ps
- 插槽作用域渲染按钮开关 ~ 满满的干货哦
- 代码证年审 年报 附文档 短消息类服务接入代码 电信业务资源综合管理系统用户手册-码号年报 (码号使用单位)
- linux模拟lcd显示文字,求助 armlinux中实现lcd显示
- mysql编码utf8改为g_修改MySQL的编码为UTF8
- linux下vi命令大全,linux系统vi命令详解
- cydia所有中文源地址_Cydia中文源大全.doc
- java ts视频文件转mp4格式在线求助
- qt:qt5.12警告消除大法之 warning: zero as null pointer constant
- 《船舶流体力学》知识点总结——1.绪论
- html中去除下划线,下划线怎么取消?
- java中的instance_Java基础之Class类与instance关键字
- Pycharm安装FLASK出现错误,无法安装
热门文章
- VMware Workstation Pro 虚拟机启动失败 cpu虚拟化开启
- tkinter打包为exe后找不到图片 tkinter_TclError:couldn‘t open “a.png“ no such file or directory
- numpy:数组累乘
- 车联网群雄逐鹿,通信业将如何掘金?
- opencv: C++实现将彩色图转换为灰色图
- 一台计算机数据丢失与恢复,数据丢失后的六种计算机恢复方法
- 在nginx中设置三级域名
- 韩寒诉百度文库侵权案分析
- tabbar 图片太大了怎么办_设置TabBar分栏控制器上图片的大小问题
- LOJ10102旅游航道