5) EHAutoElem 클래스

EHAutoElem 클래스는 자동화 요소와 해당 요소에서 지원하는 컨트롤 패턴을 참조할 수 있는 클래스입니다. 그리고 요소의 화면을 캡쳐한 이미지를 멤버로 갖습니다.

자동화 요소에서 어떠한 컨트롤 유형을 지원하는지 조사한 것을 사전 개체로 기억합시다.

그리고 자동화 요소의 속성을 문자열 목록으로 기억합시다.

자동화 요소를 래핑합니다.

개체와 매핑할 무언가가 있을 때 이를 기억하였다가 사용할 수 있는 속성을 제공합시다.

자동화 요소를 캡쳐한 이미지를 기억하는 속성을 제공합시다.

흑백 이미지로 변환하는 메서드를 구현합시다.

먼저 원본 이미지의 크기를 갖는 Bitmap 개체를 만듭니다.

원본 이미지의 x,y 좌표의 색 정보를 얻어와서 흑백으로 색을 변환합니다.

흑백으로 변환하는 공식은 R*0.299 + G*0.587 + B *0.114입니다.

그리고 흑백으로 변환한 색 정보로 흑백 이미지에 설정합니다.

모든 픽셀에 흑백 이미지를 설정한 비트맵 개체로 멤버 필드를 설정합니다.

 

생성자 메소드는 자동화 요소를 입력 인자로 받습니다.

입력 인자로 받은 자동화 요소를 속성에 설정합니다.

사각 영역정보를 구합니다. 자동화 요소의 사각 영역 정보는 Rect 형식이며 Windows Forms 응용에서는 Rectangle 형식을 사용하므로 이를 변환하는 것입니다. 이 부분은 별도의 메서드를 구현하여 사용합시다.

사각 영역 정보로 비트맵 개체를 생성합니다.

비트맵에 그릴 수 있는 Graphics 개체를 생성합니다. 비트맵에 그릴 수 있는 Graphics 개체를 생성할 때는 Graphics 클래스의 정적 메서드 FromImage 메서드를 사용합니다.

화면에서 비트맵 이미지로 복사한 후 저장합니다.

Tag 속성은 null로 설정합니다. 이 부분은 사용하는 곳에서 대응할 것을 보관하였다가 사용하는 용도입니다.

현재 자동화 속성과 컨트롤 패턴을 분석하여 컬렉션에 보관합니다. 이 부분은 별도의 메서드를 구현하여 사용합시다.

평가 내용을 입력할 부분은 빈 문자열로 제공합시다. 이번 접근성 평가 도우미에서는 이 부분을 사용하지 않지만 실제 평가 도구를 만들 때는 자동화 요소마다 평가 사항을 기재할 수 있는 필드를 제공하는 것이 효과적입니다.

ENUM_UIProperty 열거형에 열거한 순서로 자동화 속성을 컬렉션에 추가합니다.

…중략…

LabledBy 속성은 해당 컨트롤의 이름으로 설정하는데 null일 수 있으므로 예외 처리합니다.

 

컨트롤 패턴을 분석하는 메서드를 구현합시다.

자동화 요소의 TryGetCurretnPattern 메서드를 이용하여 특정 컨트롤 패턴을 지원하는지 확인하여 지원할 때만 컬렉션에 추가합니다.

컬렉션에 추가한 자동화 속성 정보를 인덱스로 검색하는 기능을 제공합시다.

UI 속성 열거형으로 자동화 속성 정로블 검색하는 기능도 제공합시다.

 

 

컨트롤 열거형을 인자로 사전 컬렉션에 추가한 개체를 검색하는 기능도 제공합시다.

ToString 메서드를 재정의하여 Name 속성과 Class 이름 속성을 하나의 문자열로 형성하여 반환합니다.

 

다음은 자동화 요소 속성의 rect 정보를 Rectangle 형식으로 변환하여 반환하는 메서드입니다.

평가에 사용할 자동화 요소들을 구분하기 위한 ID를 만드는 메서드를 제공합시다.

이름과 자동화 ID, 지역화 컨트롤 이름, 클래스 이름의 조합으로 구분합시다.

 

 

[소스 10.5] EHAutoElem.cs