퇴근5분전

 

  이번 오브젝트 툴을 만들면서 오브젝트간에 관계 표시를 위해 라인을 그리던중...

기존에는 (오브젝트)중심점 --- (오브젝트)중심점으로 라인을 잡고 오브젝트면과의 교차점등을 구해서 라인을 그렸었는데...

 

  생각해보니 내부에 다각형을 넣어두고 중심점이 아닌 다각형 꼭지점간에 라인을 그리면 좀더 많은 라인을 중첩되지 않게 구현이 될듯 하여 사각 박스 내부에 들어갈 다각형을 고민하였다. ppt에 원을 넣고 클릭하면 몇개의 점들이 보이는데 이걸 참고하기로 하였다.

 

 우선 사각형을 만들었고, 내부에 원을 그려넣었는데 이 원의 꼭지점 갯수를 정했다 16개!

 

그리고 각 오브젝트간 관계에 대한 선을 그리기 전에 오브젝트간에 가장 가까운 점을 구하게 되었다.

 

알고리즘도 있는듯 한데 어차피 대상이 16개 - 16개 이므로 하나씩 루프를 돌며 찾는다.

 

 

 

 완성된 모습... 오브젝트를 이리 저리 옮겨봐도 역시 잘 찾아서 따라온다.

 

Box = UserControl

내부 동그라미는 별도 관리 객체를 만들었고 Box내부에서 Paint로 그린다.

 

라인이 그려지기 전에 각 오브젝트간 관계에 따라 가까운 점을 찾아 그린다. ( 계산은 별도관리객체에서 한다. )

 

각 포인트마다 char 문자를 준 이유는 가장 가까운 점을 찾은 후 다음 관계라인을 그릴때는 다음 가까운 라인을 찾기 위해 쓰여진다.

 

 

 

'# 1) 프로그래밍' 카테고리의 다른 글

Directory.Create 관련...  (0) 2014.06.09
C#] 프로세스의 파일경로 읽어오기.  (0) 2014.05.30
한글분해_결합, 오토마타...  (0) 2014.01.30
달력 컨트롤] 새로 만든 달력!!!  (0) 2014.01.26
알고리즘] 2  (0) 2013.11.15