Rect、RectF矩形类

Rect

Rect、RectF都表示矩形类,他由4个坐标(left,top,right,bottom) 来组成一个矩形,在 android中很多地方都用到矩形

1:构造函数
new Rect()创建一个空矩形对象,new Rect(Rect r)指定一个矩形来创建新的矩形对象
new Rect(int left, int top, int right, int bottom)指定4个坐标创建矩形对象
在这里插入图片描述

上图就是left,top,right,bottom四个数的值,left 左边距离y轴的值 ,top上边距离x轴的值,right右边距离y轴的值
bottom底部距离x轴的值
我个人理解就是left, top 就是矩形左上角坐标横纵坐标,right,bottom就是矩形右下角坐标的横纵坐标

2:方法介绍

获取矩形的中心点

int centerX()、int centeY(),获取的int值 float exactCenterX()、float
exactCenterY()同上获取的是float类型值,精确些

判断坐标是否是在矩形内

boolean contains(int x, int y) :给定的xy是否在矩形内 contains(int left, int
top, int right, int bottom) 给顶的4个点是否在矩形内 contains(Rect r)
给顶的矩形是否在矩形内,或者是等于当前矩形大小

通过一个字符串来表示已有的矩形

String flattenToString()、 Rect unflattenFromString(String s)
flattenToString()通过一个字符串来表示已有的矩形,这个字符串其实包含了4个坐标
unflattenFromString(String str):通过字符串获取矩形
Rect rect=new Rect(10,10,110,100); //创建一个矩形
String s= rect.flattenToString();//通过flattenToString()获取一个字符串
Rect news=Rect.unflattenFromString(s);//通过获取的字符串再获取到一个矩形
toShortString ():和flattenToString一样只是返回的字符串形式不一样
toShortString()返回回来是[10,10][10,10]形式, flattenToString是 10 10 10 10形式

获取矩形的宽高
int height()、int width()

改变矩形原有坐标进行内部移动

inset(int dx, int dy)

有一矩形new Rect(0,0,300,300,) 执行inset(100,0) 后矩形为(100,0,200,100)
这个方法意思是dx:在矩形的lef,right向矩形内部各移动100 原始left为0,dx为100故在矩形内移动100,0+100=100
原始right为300,dx为100在矩形内移动100,300-100=200
总结:注意矩形内移动,即right点是向左边移动100,如果向右边方向移动100,那是在矩形外了。故dx为负数,就是lef
和right向矩形外部移动100,dy同理

判断2个矩形是否相交,2个矩形有交集,或者一个包含另外一个都为true

boolean intersect(Rect r)、boolean intersect(int left, int top, int
right, int bottom) boolean intersects(Rect a, Rect b)、intersects(int
left, int top, int right, int bottom) boolean setIntersect(Rect a,
Rect b)

判断矩形是否为null,没设置坐标为null
isEmpty ()

矩形偏移,移动矩形不会改变矩形本身的宽高值

offset(dx,dy):矩形在原位置上再偏移dx、dy个像素 offsetTo(int newLeft, int newTop)
这个是给定新的值直接偏移,不考虑源位置 比如现在坐标是(10,10,10,10) 我们用offsetTo(100,100)那么直接变成
(100,100,10,10)而不是像offset是相对于原坐标偏移,如果是offset来偏移那结果 (110,110,10,10)

设置已有矩形的值,设置之后会采用新的矩形值,注意值传递正确,2个方法进行检查
set(int left, int top, int right, int bottom)、set(Rect rect)

Rect rect=new Rect(10,10,310,310);
rect.set(20,10,300,200);
canvas.drawRect(rect, paint);
//如上创建一个矩形宽高是300,用了set方法后矩形宽高变为280,
//190新绘制出来的矩形宽高就变成了280,190,不再是原来的矩形
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要判断两个矩形是否相交,可以使用矩形对象的成员方法intersect或静态方法intersects进行判断。在Android开发中,可以使用RectRectF来表示矩形。 根据引用的内容,两个矩形相交的条件是:两个矩形的重心距离在X和Y轴上都小于两个矩形长或宽的一半之和。可以将这个条件分成两次判断,首先计算两个矩形的重心距离,然后分别判断X轴和Y轴上的距离是否小于两个矩形长或宽的一半之和。 另外,引用提到在使用opencv编写文本定位程序时,也需要判断矩形是否相交。你可以参考上述方法来判断两个矩形是否相交。 总结来说,判断两个矩形是否相交可以使用矩形对象的intersect或intersects方法,或者按照两个矩形重心距离和长、宽的一半之和的条件进行判断。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [判断两个矩形是否相交](https://blog.csdn.net/hello____world_0109/article/details/114535827)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [判断两个矩形是否相交的4个方法](https://blog.csdn.net/weixin_30256901/article/details/96290400)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值