共用方式為


高對比度模式

平臺

用戶端 - Windows 8
Server - Windows Server 2012

描述

在舊版 Windows作系統中,高對比度模式僅限於在傳統主題下執行的主題,這些主題並未以視覺方式設定樣式。 在 Windows 8 和 Windows Server 2012 中,傳統模式已移除,並取代為可視化樣式的高對比度主題。 這項變更的主要優點之一是移除傳統模式中執行之應用程式的個別程式代碼路徑。

開發人員仍然需要接受高對比度模式如何影響其應用程式的教育,以及如何開發真正與風格無關的應用程式。 這很重要,因為雖然主題色彩的使用不正確或假設會導致應用程式在視覺樣式下正確運作,例如 Aero,但這些相同的應用程式在高對比度下回應不正確。 例如,在 Aero 中,文字一律為黑色,反白色彩為淺藍色。 不過,在高對比度黑色中,反白顯示色彩為黑色。 如果您假設黑色文字,如同 Windows 8 之前的許多內建應用程式的情況,並使用系統預設值來反白顯示,使用者會在黑色背景上看到黑色文字。 在這些情況下,您必須瞭解如何正確使用主題和系統計量,讓應用程式在樣式之間看起來正確。

表現

  • 在應用程式指令清單中未包含 Windows 8 <supportedOS> 標籤的應用程式工作區中,不會啟用主題設定。 因此,應用程式必須使用傳統主題的高對比度模式轉譯所需的程式代碼路徑來轉譯工作區。
  • 在高對比度主題中,應用程式的非用戶端和用戶端應用程式區域都未啟用主題主題。 它也不會在應用程式指令清單中包含 Windows 8 <supportedOS> 卷標的應用程式中啟用,而且會使用 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 方法來取得適當的計量。

  • 選取文字色彩:

    請勿使用硬式編碼的文字色彩,即使它假設在所有常見案例中看起來都沒問題。 出貨主題的建立方式,可支援高可見度與相關聯的計量。 例如,COLOR_HIGHLIGHTTEXT應搭配COLOR_HIGHLIGHT作為背景使用,而COLOR_WINDOWTEXT則用來搭配背景COLOR_WINDOW使用。 如果這些關聯有例外,請在主題元件和狀態定義本身,而不是在程式碼中使用它們。 設計高對比度 UI 時,UI 必須與目前套用的高對比度主題無關,因為高對比度使用者可以自定義其色彩。

  • 回應WM_ThemeChange事件的

    如果您的 app 快取從主題擷取的色彩,或以非標準的方式套用色彩,請為WM_THEMECHANGE新增訊息處理程式,以重新計算預存的色彩值並重新畫出 UI。

  • 撰寫高對比度 WWA 應用程式:

    Web 應用程式無法存取 UxTheme API,但仍應以目前的系統計量撰寫為 UI 的基礎。 WWA 開發人員有幾個資源可用來確保高對比度相容應用程式:

    • W3C CSS 色彩規格 指定使用系統計量而非特定色彩的語法
    • 將高對比度媒體查詢的支援新增至 Internet Explorer 10
    • WWA 可以利用 IAccessibilityCapabilities::get_HighContrast() 方法來檢查高對比度的狀態

    Windows 市集應用程式在傳統 Windows 應用程式中的主題元件沒有許多相同的問題,但您仍然需要確保高對比度合規性。 根據預設,Internet Explorer 會忽略特定使用者定義的樣式,並以高對比度相容值取代它們。 例如,會忽略背景影像、背景和色彩 CSS 屬性。

    如果您不想讓 Internet Explorer 忽略您設定的任何屬性,而且您已確定 UI 符合高對比度標準,則可以在父元素上設定新的 M3 CSS 屬性 –ms-high-contrast:off。

  • 撰寫高對比度 Windows 市集應用程式:

    Windows 市集應用程式應該使用 SystemColors 類別來判斷適當的 UI 元素著色,請記住,某些系統計量色彩的設計目的是要搭配使用,例如 SystemColors.WindowColor 和 SystemColors.WindowTextColor。 這可促進優越的高對比度體驗。

  • 在舊版 Windows 中正確偵測高對比度:

    在舊版 Windows 上執行的應用程式無法存取新的高對比度主題,即使指令清單指定與有問題的 Windows 版本相容也一樣。 因此,您可能需要插入其他程式代碼路徑,以處理舊版 Windows 中使用的傳統環境中轉譯。 在此情況下,應藉由使用 SPI_GETHIGHCONTRAST 旗標呼叫 SystemParametersInfo 函式來檢查高對比度。 這是檢查高對比度是否存在的唯一支援方式。

測試

在測試應用程式時,請確定它在 Windows 8 所提供的所有內建主題中正確呈現:Aero、Basic、High Contrast 1、High Contrast 2、High Contrast Black 和 High Contrast White。 請確定文字在高對比度主題中清晰可見且易於閱讀。

資源