고대비 모드
플랫폼
클라이언트 - Windows 8
서버 - Windows Server 2012
Description
이전 Windows 운영 체제에서 고대비 모드는 시각적으로 스타일이 지정되지 않은 클래식 테마에서 실행되는 테마로 제한되었습니다. Windows 8 및 Windows Server 2012 클래식 모드가 제거되고 시각적으로 스타일이 지정된 고대비 테마로 대체되었습니다. 이 변경의 기본 이점 중 하나는 클래식 모드에서 실행되는 앱에 대한 별도의 코드 경로를 제거하는 것입니다.
개발자는 여전히 고대비 모드가 앱에 미치는 영향과 스타일에 구애받지 않는 앱을 개발하는 방법에 대해 교육해야 합니다. 테마 색을 잘못 사용하거나 가정하면 앱이 Aero와 같은 시각적 스타일에서 올바르게 동작할 수 있지만 동일한 앱은 고대비에서 잘못 응답하기 때문에 중요합니다. instance 경우 Aero에서 텍스트는 항상 검은색이고 강조 색은 연한 파란색입니다. 그러나 고대비 검정에서는 강조 색이 검은색입니다. Windows 8 이전의 많은 기본 제공 앱에서와 같이 검은색 텍스트를 가정하고 시스템 기본값을 사용하여 강조 표시하면 검은색 배경에 검은색 텍스트가 표시됩니다. 이러한 상황에서는 테마 및 시스템 메트릭을 올바르게 사용하는 방법을 이해하여 앱이 스타일 간에 올바르게 표시되도록 해야 합니다.
발현
- 앱 매니페스트에 지원>되는 Windows 8 <태그가 포함되지 않은 앱의 클라이언트 영역에서는 테마 지정을 사용할 수 없습니다. 따라서 앱은 클래식 테마의 고대비 모드로 렌더링하는 데 필요한 코드 경로를 사용하여 클라이언트 영역을 렌더링해야 합니다.
- 테마는 고대비 테마의 앱의 비 클라이언트 영역과 클라이언트 영역에서 모두 사용하도록 설정되지 않습니다. 또한 앱 매니페스트에 Windows 8 <지원되는OS> 태그가 포함되지 않고 DwnIsCompositionEnabled() API를 사용하여 창의 비 클라이언트 영역에 그리는 앱에서도 사용할 수 없습니다. 전체 앱은 클래식 테마의 고대비 모드로 렌더링됩니다.
- 매니페스트에서 Windows 8 대한 지원을 추가하지만 렌더링에 비주얼 스타일을 사용하지 않는 앱, 즉 앱에서 색 또는 이미지를 하드코딩하는 앱은 고대비 테마에서 올바르게 렌더링되지 않을 수 있습니다. 텍스트를 읽기 어렵거나 이미지가 고대비 모드로 표시되지 않을 수 있습니다.
완화 방법
고대비 테마의 텍스트 색은 Microsoft 접근성 지침을 준수하도록 작성되었습니다. 전경과 배경 간에 14:1 고대비 비율을 유지합니다. 기본적으로 사용하도록 설정된 색이 특정 최종 사용자에게 적합하지 않은 경우 이러한 고대비 테마에서 '창 색'에 대한 제어판 설정을 통해 쉽게 사용자 지정할 수 있습니다.
이러한 UI 구성 요소는 고대비 테마로 사용자 지정할 수 있습니다.
- 창 배경색
- 텍스트 색
- 하이퍼링크 색
- 사용할 수 없는 텍스트
- 선택한 텍스트 전경색 및 배경색
- 활성 창 제목 전경 및 배경색
- 비활성 창 제목 전경 및 배경색
- 단추 전경색 및 배경색
솔루션
고대비 테마의 앱에서 예기치 않은 동작이 표시되는 경우 다음 솔루션 중 하나가 도움이 될 수 있습니다.
Windows 8 대한 앱 매니페스트:
앱 매니페스트에서 지원되는 Windows 8 <OS> 태그를 포함하지 않는 앱에는 테마 없이 클라이언트 영역이 렌더링됩니다. 기본 제공 앱은 모두 앱 매니페스트에 이 항목을 포함해야 합니다. Windows 8 대한 4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38 GUID 값을 추가합니다.
소유자가 그린 UI에서 비주얼 스타일 사용:
소유자가 그린 컨트롤은 텍스트를 포함하여 컨트롤 파트 및 상태를 올바르게 렌더링하기 위해 MSDN 의 지침을 따라야 합니다. 개발자는 렌더링에 비 UxTheme 메서드를 사용하기 위해 디바이스 컨텍스트에 지정된 텍스트 또는 배경색에 의존해서는 안 됩니다. 해당 컨트롤에 대한 테마 부분이 없는 경우 적절한 메트릭 과 함께 GetThemeSysColor를 사용하고 표준 GDI 메서드를 사용하여 텍스트를 그립니다. UxTheme 호출이 적절하지 않은 경우 GetSysColor 메서드를 사용하여 적절한 메트릭을 가져옵니다.
텍스트 색 선택:
모든 일반적인 시나리오에서 잘 보이더라도 하드 코딩된 텍스트 색을 사용하지 마세요. 전달 테마는 연결된 메트릭을 사용하여 높은 가시성을 지원하는 방식으로 만들어집니다. instance 경우 COLOR_HIGHLIGHTTEXT COLOR_HIGHLIGHT 배경으로 사용되며 COLOR_WINDOWTEXT COLOR_WINDOW 배경으로 사용됩니다. 이러한 연결에 예외가 있는 경우 코드가 아닌 테마 파트 및 상태 정의 자체에서 작업합니다. 고대비 UI를 디자인할 때 고대비 사용자가 색을 사용자 지정할 수 있으므로 UI가 현재 적용된 고대비 테마에 구애받지 않는 것이 중요합니다.
WM_ThemeChange 이벤트에 응답:
앱이 테마에서 검색된 색을 캐시하거나 비표준 방식으로 색을 적용하는 경우 저장된 색 값을 다시 계산하고 UI를 다시 그리는 WM_THEMECHANGE 대한 메시지 처리기를 추가합니다.
고대비 WWA 앱 작성:
웹앱은 UxTheme API에 액세스할 수 없지만 UI의 기준으로 현재 시스템 메트릭을 사용하여 작성해야 합니다. WWA 개발자가 고대비 규격 앱을 보장하기 위해 활용할 수 있는 몇 가지 리소스가 있습니다.
- W3C CSS 색 사양은 특정 색 대신 시스템 메트릭을 사용하기 위한 구문을 지정합니다.
- 인터넷 Explorer 10에 고대비 미디어 쿼리에 대한 지원이 추가되고 있습니다.
- WWA는 IAccessibilityCapabilities::get_HighContrast() 메서드를 활용하여 고대비 상태를 검사 수 있습니다.
Windows 스토어 앱은 클래식 Windows 애플리케이션에 있는 테마 파트와 동일한 문제가 많지 않지만 여전히 고대비 규정 준수를 보장해야 합니다. 기본적으로 인터넷 Explorer 특정 사용자 정의 스타일을 무시하고 고대비 규격 값으로 대체합니다. 예를 들어 배경 이미지, 배경 및 색 CSS 속성은 무시됩니다.
인터넷 Explorer 설정한 속성을 무시하지 않고 UI가 고대비 규격인지 확인한 경우 부모 요소에서 새 M3 CSS 속성인 ms-high-contrast: off를 설정할 수 있습니다.
고대비 Windows 스토어 앱 작성:
Windows 스토어 앱은 SystemColors.WindowColor 및 SystemColors.WindowTextColor와 같은 특정 시스템 메트릭 색을 함께 사용하도록 설계되어 있으므로 적절한 UI 요소 색 지정을 결정하기 위해 SystemColors 클래스를 사용해야 합니다. 이렇게 하면 뛰어난 고대비 환경을 용이하게 할 수 있습니다.
이전 버전의 Windows에서 고대비를 제대로 검색합니다.
매니페스트가 해당 Windows 버전과의 호환성을 지정하더라도 이전 버전의 Windows에서 실행되는 앱은 새로운 고대비 테마에 액세스할 수 없습니다. 따라서 이전 버전의 Windows에서 사용된 클래식 환경에서 렌더링을 처리하기 위해 추가 코드 경로를 삽입해야 할 수 있습니다. 이 경우 SPI_GETHIGHCONTRAST 플래그를 사용하여 SystemParametersInfo 함수를 호출하여 고대비가 있는지 확인해야 합니다. 이것은 고대비의 존재를 확인하는 유일한 지원되는 방법입니다.
테스트
앱을 테스트하는 동안 Aero, Basic, High Contrast 1, 고대비 2, 고대비 검정 및 고대비 흰색과 같은 Windows 8 제공하는 모든 기본 제공 테마에서 올바르게 렌더링되는지 확인합니다. 고대비 테마에서 텍스트를 명확하게 표시하고 읽기 쉬운지 확인합니다.
리소스
- 에어로 스타일 클래스, 파트 및 상태 (새로운 기본 테마 및 고대비 테마도 이러한 상태를 사용)
- 모든 비주얼 스타일에 공통적인 부분 및 상태
- 사용자 지정 및 소유자가 그린 컨트롤과 함께 시각적 스타일 사용
- GetSysColor 함수
- W3C CSS 색 모듈 수준 3
- SystemColors 클래스
- SystemParametersInfo 함수
- Microsoft Accessibility