python中rect函数_Rect和RectF函数

1.是否包含点,矩形

判断是否包含某个点

boolean contains(int x,int y)  函数用于判断某个点是否在当前矩形中,如果在,则返回true ,不在则false

2.判断是否包含某个矩形

public boolean contains(float left, float top, float right, float bottom) 判断是否包含某个矩形

public boolean contains(RectF r)判断是否包含某个矩形

3.判断是否相交

public boolean intersect(float left, float top, float right, float bottom) 成员方法判断是否相交

public boolean intersect(RectF r)成员方法判断是否相交

static boolean intersects(RectF a, RectF b)静态方法判断是否相交

public void union(float left, float top, float right, float bottom)合并二个矩形,指两个矩形合并成一个矩形,无论矩形是否相交,取两个矩形的最小脚点作为结果矩形的左上角点,取二个矩形最大在右下角点作为结果矩形的右小角点,如果一方为空,则将有值得一方为最终结果

4.合并矩形和点

public void union(RectF r) 合并两个矩形

public void union(float x, float y)合并两个矩形的点,如果不相交,根据目标点的位置,将目标点设置为当前的矩形的左上角点或者右下角点,如果当前矩形是一个空矩形,则最后的矩形为([0,0],[x,y])

示例代码:

public class BasisView extendsView {private floatmX;private floatmY;publicBasisView(Context context) {super(context);

}publicBasisView(Context context, @Nullable AttributeSet attrs) {super(context, attrs);

}public BasisView(Context context, @Nullable AttributeSet attrs, intdefStyleAttr) {super(context, attrs, defStyleAttr);

}

@Overrideprotected voidonDraw(Canvas canvas) {super.onDraw(canvas);

Paint paint= new Paint();//画笔

paint.setAntiAlias(true);

paint.setStyle(Paint.Style.STROKE);//填充样式//Paint.Style.FILL没有描边的实心圆 Paint.Style.FILL_AND_STROKE 有描边的实心圆 Paint.Style.STROKE 空心圆环

paint.setStrokeWidth(5);//描边宽度值

RectF rectF = new RectF(100, 10, 300, 100);if(rectF.contains(mX,mY)){

paint.setColor(Color.RED);

}else{

paint.setColor(Color.BLUE);

}

canvas.drawRect(rectF, paint);

}

@Overridepublic booleanonTouchEvent(MotionEvent event) {

mX=event.getX();

mY=event.getY();if (event.getAction() ==MotionEvent.ACTION_DOWN) {

invalidate();//重绘控件

return true;

}else if (event.getAction() ==MotionEvent.ACTION_UP) {

mX= -1;

mY= -1;

}

postInvalidate();//刷新控件屏幕 ,.让控件重绘

return super.onTouchEvent(event);

}

}

效果显示当手指下按时,如果在矩形内则显示红色矩形,离开则为蓝色

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值