Surfaceview 및 캔버스 그리기를 사용하여 Android에서 사용자 지정 구성 요소를 만들려고합니다. 구성 요소는 터치하여 크기가 조정되고 회전 할 수 있습니다. 꼭지점을 터치하고 드래그하여 위쪽, 오른쪽, 아래쪽 및 왼쪽 가장자리가 확장 가능한 이미지보기를 만드는 것이 좋습니다. 구성 요소의 경계를 유지하기 위해 RectF
을 사용하고 있습니다. 회전하려면 canvas.rotate(angle, bounds.centerX(),bounds.centerY())
메서드를 사용하고 있습니다. 문제는 상단 가장자리의 크기를 조정할 때 Let, Right 및 Bottom 모서리를 고정해야하며 회전 각도가 0 도가 아닌 경우 고정 할 수 없습니다. 실제 사각형의 경계를 기준으로 회전 된 사각형의 x, y 좌표를 찾으려면 수학 솔루션이 필요합니다.회전 각도를 기준으로 한 직사각형 좌표
일부 이미지를 사용하여 설명 할 수 있습니다. 다음 그림은 범위가 알려져 있고 각 색상으로 표시된 두 개의 직사각형을 표시합니다. 초록색 사각형을 구성 요소의 초기 경계로 고려하십시오. -45도 회전, 중심은 (10,10)입니다. 이제 다시 크기가는 상단 사각형 및 표시를 다음도 2
상기도 2로부터,이 Y 위치 6 회전에서 4로 감소되어있는 것을 알 수있다 사각형도 분홍색으로 표시됩니다. 구성 요소가 회전 각도 -45도에서 크기를 조정하는 동안 끌어서 이동하는 동안 기억하십시오. 위쪽 가장자리 직사각형의 왼쪽, 오른쪽 및 아래쪽 위치는 변경하면 안됩니다.. 따라서 그림 2의 핑크 사각형은 이어야합니다. 왼쪽, 오른쪽 및 아래 좌표은 과 같습니다. 그림 1의 녹색 사각형. 얻어진 예상 사각형의 비교는 노란색 사각형이 예상/필수 밖으로 넣어 그림 3에서
그림 3에 표시됩니다. 얻어진 의 직사각형 분홍색 색은 녹색 회전 사각형과 비교하여 위쪽으로 시프트되고 회전 각도는 달라집니다. 회전 각도는입니다.- I는 회전 각도 = -45도 실제의
- 경계 (다른 리사이즈) 구형을 갖는다.
- 실제 크기 (크기가 조정되지 않음) 사각형의 경계는 회전 = -45도입니다.
- 크기가 직사각형 인 경계.
- 회전의 -45도에서 재사용 사각형의 범위.
노란색 직사각형의 경계/중심을 어떻게 계산합니까? 그래서 구성 요소의 크기 조정을 올바르게 구현할 수 있습니까? 적용 할 수있는 수학이 있는지 알려주세요.
필요한 점/좌표는 당신의 그림 3-
그냥 회전 지점에서 끝날 것, 기본 공식은 다음과 같습니다 X_ = X * COS (각도) - y를 * 죄 (각도); y_ = y * sin (각도) + y * cos (각도); http://en.wikipedia.org/wiki/Rotation_(mathematics) – user1410657