도형 변환과 관련하여 문의드립니다...ㅠㅜ
카프리콘
안녕하세요
제가 도현 변환과 관련하여 문의드릴게 있어서 이렇게 글을 올리게되었습니다
이곳저곳에 문의를 하고 있긴한데 답변이 없어서 막막해 죽을것 같습니다./...ㅠㅜ처음 위치가 1번인 상태에서 3번처럼 회전 시키고 4번처럼 크기변경을 했을 경우 처리 순서가
1. 현재 정보를 저장하는데요... 저장값은 mousemove에서 현재 포인터와 point 이전포인트의 차이값을 통해서
4번을 다시 원위치로 회전시킨 2번의 위치와 변경된 크기, 그리고 기존 회전각을 저장 시킵니다
즉 (0, 0) 위치에 있는 100 * 100 사이지의 이미지를 45도 회전 시킨 후가로 길이를 200으로 변경 시켰을 경우
저장 값은 위치는0 * 0이구요... 변경된 크기 200 * 100 그리고 45도를 저장 시킵니다...
2. Onpaint()함수에서 matrix의 RotateAt() 함수를 사용해서 회전을 시키는데
RotateAt() 함수의 매개 변수로 사용되는 값이 1에서 저장 시킨 위치와 변경된 크기의 이미지의 중심점과
회전각을사용하는데요... 이때 사용하는 중심점 값이이미 변경된 크기의 이미지에서의 중심점을 넣다 보니깐
이미지를 회전 시킨후 크기를 변경시킬 때마다 이미지가 출력되는 위치가 점점 아래로 출력되거나 위에 출력되더라구요...
즉 RotateAt(45, 100, 50) 이런 식으로 저장을 합니다...(100 * 50은 200*100의 중심점 값입니다..)
(참고로 중심점은 이미지의 정 중앙 이구요... 이미지가 위, 또는 아래로 출력 될 경우 left, top의 값이 변경 되는건 아닙니다)
3. graphics.DrawImage()함수를 사용해서 이미지를 출력해줍니다
이때 사용하는 매개 변수 값은 1에서 저장된 위치와 변경된 크기값을 사용합니다...
graphics.DrawImage(image, 0, 0, 200, 100) 이렇게 출력을 시킵니다...
제가 이미지를 회전 시키고 resizing 시키는 과정에서 실수를 하는 부분이 어디인지 조언부탁드립니다..ㅠㅜ
matrix를 사용해서 추가로 더 저장하거나 설정해 줘야되는것이 있는것인지... 이것떄문에 며칠째 삽질만하고 있는데요
죽겠습니다...ㅠㅜ