9. 3 접근성 평가 도우미 폼, 컨트롤 구현
이제 접근성 평가 도우미의 폼과 컨트롤을 구현합시다.
구현 순서는 프로그램 방식의 하이라이트를 보여주는 EHHighlight, 생성할 프로젝트 이름을 정하는 ProjectMakerControl, 프로세스를 선택하는 ProcessSelectForm, 프로젝트 생성 정보를 보여주는 ProjectInfoControl, 이미지 보기 Form, InvokePattern Form 순으로 작성한 후에 MainForm을 작성합시다. 실제 프로그래밍을 하는 순서는 이와 다르지만 분석하기 쉽게 하려고 순서를 이와 같이 할게요.
EHHighlight 개체는 원하는 사각 영역을 감싸는 하이라이트로 프로그램 방식의 초점을 표시하기 위함입니다.
접근성 평가 도우미에서는 특정 UI 요소 주변을 감싸는 것이 필요한데 해당 UI 요소를 사용할 수 있게 하려고 상, 하, 좌, 우에 경계선만 보이는 4개의 폼을 보여주는 형태로 만들 것입니다.
먼저 EHHightlight의 상, 하, 좌, 우에 경계선만 보이는 4개의 폼에 사용할 HighlightForm을 정의합시다.
HighlightForm을 프로젝트에 추가한 후에 속성을 다음처럼 변경합니다.
속성명 |
속성값 |
속성명 |
속성값 |
AutoScaleMode |
None |
BackColor |
Red |
Enabled |
False |
FormBorderStyle |
None |
MaximizeBox |
False |
MinimizeBox |
False |
ShowIcon |
False |
ShowInTaskbar |
False |
Size |
0,0 |
SizeGripStyle |
Hide |
StartPosition |
Manual |
TopMost |
True |
[표 9.1] HighlightForm 속성
그리고 HighlightForm 개체 4개를 멤버로 하는 EHHightlight 클래스를 정의합니다. 단순히 둘러쌀 사각 영역을 설정하면 이에 맞게 상, 하, 좌, 우 HighlightForm 개체의 위치 정보를 계산하여 변경하는 것과 Visible 속성에 따라 보여주기, 숨기기를 하는 기능을 제공합니다.
using System.Drawing; using System; namespace 예제_9_접근성_평가_도우미 { public class EHHighlight { Rectangle rect; HightlightForm leftform = null; HightlightForm topform = null; HightlightForm rightform = null; HightlightForm bottomform = null; int bordersize = 4; public Rectangle Rect { get{ return rect; } set { rect = value; ChangeRect(); } } public bool Visible { get{ return leftform.Visible; } set{ ChangeVisible(value); } } public EHHighlight() { leftform = new HightlightForm(); topform = new HightlightForm(); rightform = new HightlightForm(); bottomform = new HightlightForm(); Rect = new Rectangle(-100, -100, bordersize, bordersize); } private delegate void ChangeVisibleDele(bool visible); private void ChangeVisible(bool visible) { if (leftform.InvokeRequired) { leftform.Invoke(new ChangeVisibleDele(ChangeVisible), new object[] { visible }); } else { leftform.Visible = bottomform.Visible = visible; rightform.Visible = topform.Visible = visible; leftform.Visible = visible; } } public void Close() { leftform.Close(); rightform.Close(); topform.Close(); bottomform.Close(); } delegate void ChangeRectDele(); private void ChangeRect() { if (leftform.InvokeRequired) { leftform.Invoke(new ChangeRectDele(ChangeRect), null); } else { leftform.Left = rect.Left - bordersize; leftform.Top = rect.Top - bordersize; leftform.Width = bordersize; leftform.Height = rect.Height + 2 * bordersize; rightform.Left = rect.Right; rightform.Top = leftform.Top; rightform.Width = leftform.Width; rightform.Height = leftform.Height; topform.Left = rect.Left; topform.Top = leftform.Top; topform.Width = rect.Width; topform.Height = bordersize; bottomform.Left = topform.Left; bottomform.Top = rect.Bottom; bottomform.Width = topform.Width; bottomform.Height = topform.Height; } } } } |
[소스 9.7] EHHighlight.cs
'프로그래밍 기술 > 소프트웨어 접근성, UI 자동화' 카테고리의 다른 글
9. 접근성 평가 도구 만들기 - 18. InvokePatternForm (0) | 2017.12.12 |
---|---|
9. 접근성 평가 도구 만들기 - 17. 이미지 보기 Form (0) | 2017.12.12 |
9. 접근성 평가 도구 만들기 - 16. ProjectInfoControl (0) | 2017.12.12 |
9. 접근성 도구 만들기 - 15. ProjectSelectForm (0) | 2017.12.12 |
9. 접근성 평가 도구 만들기 - 14.ProjectMakerControl (0) | 2017.12.12 |
9. 접근성 평가 도구 만들기 - 12. EvalManager 클래스 구현 (0) | 2016.10.27 |
9. 접근성 평가 도구 만들기 - 11. MakeProjectEvent 핸들러와 인자 클래스 구현 (0) | 2016.10.27 |
9. 접근성 평가 도구 만들기 - 10. AccEvalProject 클래스 구현 (0) | 2016.10.25 |
9. 접근성 도구 만들기 - 8. FindAutoElemEvent 핸들러와 인자 클래스 구현 (0) | 2016.10.25 |
9. 접근성 평가 도구 만들기 - 7. EHAutoElem 클래스 (0) | 2016.10.24 |