마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

Region.contains 이해 좀 도와주세요

0 추천
    	Paint myPaint02 = new Paint();
    	myPaint02.setAntiAlias(false);
    	myPaint02.setStrokeWidth(10.0f);
    	Path path02 = new Path();
    	RectF myRectF02 = new RectF();
    	Region myRegion02 = new Region();
    	ArrayList<Point> myPoints02 = new ArrayList<Point>();
    	path02.moveTo(100, 300);
    	path02.rLineTo(100, 0);
    	path02.rLineTo(0, 100);
    	path02.rLineTo(-100, 0);
    	path02.rLineTo(0, -100);
    	path02.close();

    	path02.computeBounds(myRectF02, true);
	myRegion02.setPath(path02, new Region((int)myRectF02.left, (int)myRectF02.top, (int)myRectF02.right, (int)myRectF02.bottom));
	myPoints02.add(new Point(100,300)); myPoints02.add(new Point(150,300));
	myPoints02.add(new Point(200,300)); myPoints02.add(new Point(200,350));
	myPoints02.add(new Point(200,400)); myPoints02.add(new Point(150,400));
	myPoints02.add(new Point(100,400)); myPoints02.add(new Point(100,350));
	for(int i=0; i<myPoints02.size(); i++) {
		if(myRegion02.contains(myPoints02.get(i).x, myPoints02.get(i).y)==true) {
			myPaint02.setColor(0x55ff0000);
			canvas.drawPoint(myPoints02.get(i).x, myPoints02.get(i).y, myPaint02);
			// 좌상단 3곳은 contains == true
		} else {
			myPaint02.setColor(0xff00ff00);
			canvas.drawPoint(myPoints02.get(i).x, myPoints02.get(i).y, myPaint02);
			// 우하단 5곳은 contains == false
		}
	}

 

100x100 크기의 사각형의 Path 를 Region 영역으로 잡고,

사각형의 꼭지점과 변에 위의 점 8개를 contains 로 확인해보면

좌상단 3곳은 true 이고 (영역에 포함됨)

우하단 5곳은 false 입니다. (영역에 포함안됨)

 

이거 왜 이런건가요?

조언부탁드립니다 ㅠㅠ

 

익명사용자 님이 2014년 9월 25일 질문
2014년 9월 25일 수정

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...