5) ImageForm

프로젝트에 ImageForm을 추가하세요. ImageForm에는 선택한 평가 프로젝트의 자동화 요소를 계층적으로 보여주는 트리 뷰와 평가 대상 프로세스의 메인 창 이미지를 보여주는 PictureControl을 자식으로 배치합니다.

[그림 10.13] ImageForm의 자식 컨트롤 배치
[그림 10.13] ImageForm의 자식 컨트롤 배치
번호 컨트롤 형식 컨트롤 이름 특이 사항
1 TreeView tv_hierarchy  
2 PictureBox pb_image SizeMode 속성을 AutoSize로 설정

[표 10.5] ImageForm의 자식 컨트롤

 

선택한 요소 이미지의 사각 영역에 하이라이트를 표시하여 평가자가 인식하기 쉽게 할 것입니다. 이를 위한 EHHighlight 형식 멤버 필드를 선언하세요.

하이라이트를 표시할 사각 영역과 기준 사각 영역 및 선택한 요소를 기억할 멤버 필드를 선언합니다.

이미지 폼의 Load 이벤트 핸들러를 등록하세요.

평가 프로젝트 매니저 단일체를 구하고 현재 평가 대상 프로젝트를 구합니다.

현재 선택한 평가 대상 프로젝트가 없으면 이벤트 핸들러를 종료합니다.

평가 대상 프로젝트의 메인 창이 이동하면 시각화할 기준 사각 영역이 바뀌므로 이를 인지할 수 있게 평가 대상 프로젝트 개체의 AEMoved 이벤트에 이벤트 핸들러를 등록합니다.

평가 대상 프로젝트의 메인 창 이미지를 표시합니다.

평가 대상 프로젝트 개체에서 계층 트리에서의 Root 노드를 가져와서 복제합니다.

트리 노드의 Tag에 설정한 EHAutoElem 개체를 가져옵니다. 여기서 가져온 개체는 메인 윈도우 창을 래핑한 EHAutoElem 개체입니다.

기준 사각 영역을 설정하고 계층화 트리뷰에 트리 노드를 추가한 후 펼칩니다.

사각 영역을 계산한 후 EHHighlight 개체를 생성하여 사각 영역에 하이라이트를 표시합니다.

평가 대상 프로젝트의 메인 창이 움직였을 때 발생하는 이벤트를 통보 받으면 사각 영역을 얻어와서 기준 사각 영역을 다시 설정합니다.

시각화할 사각 영역을 계산하는 메서드를 구현합니다.

상대적 위치를 반영한 x,y 위치를 구한 후에 이를 반영합니다.

트리 뷰의 AfterSelect 이벤트 핸들러를 등록합니다. 선택 노드를 변경하거나 이미지 폼을 이동하면 선택 노드를 그려주어야 합니다. 선택 노드를 그려주는 DrawSelectNode 메서드를 만들어서 호출합니다.

선택 노드가 없으면 메서드를 종료합니다.

선택한 노드의 Tag 속성에 설정한 EHAutoElem 개체를 참조하여 사각 영역을 구하여 하이라이트를 그려줄 사각 영역을 설정하는 SetDrawRect 메서드를 호출합니다.

이미지 폼의 Move 이벤트 핸들러를 등록합니다.

픽쳐 박스 이미지의 스크린 영역 좌표를 얻어와서 선택한 노드를 그려줍니다.

이미지 폼의 Closed 이벤트 핸들러를 등록합니다.

하이라이트를 표시하기 위한 eh 개체의 Close 메서드를 호출합니다.

 

 

[소스 10.13] ImageForm.cs