共用方式為


高對比模式

平台

用戶端- Windows 8伺服器- Windows Server 2012

描述

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

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

表現

  • 在應用程式資訊清單中未包含 Windows 8 < supportedOS > 標籤的應用程式工作區中,不會啟用主題設定。 因此,應用程式必須使用在傳統主題的高對比模式中轉譯所需的程式碼路徑來轉譯工作區。
  • 在高對比主題中,應用程式的非用戶端和用戶端應用程式區域都未啟用主題。 它也不會在其應用程式資訊清單中包含 Windows 8 < supportedOS > 標籤的應用程式中啟用,而且會使用 DwnIsCompositionEnabled () API 在視窗的非工作區中繪製。 整個應用程式會以傳統主題的高對比模式呈現。
  • 在資訊清單中新增對Windows 8支援的應用程式,但不會使用視覺化樣式進行轉譯,也就是說,它們在應用程式中的硬式編碼色彩或影像可能無法在高對比主題中正確轉譯。 文字可能難以閱讀,或影像可能未顯示為高對比模式。

風險降低

高對比主題中的文字色彩已撰寫成符合 Microsoft 協助工具指導方針的規範。 我們會在前景和背景之間維持 14:1 高對比比率。 如果預設啟用的色彩不適用於特定使用者,他們可以輕鬆地透過這些高對比主題中的 [視窗色彩] 控制台設定來自訂。

這些 UI 元件可在高對比主題中自訂:

  • 視窗背景色彩
  • 文字色彩
  • 超連結色彩
  • 停用的文字
  • 選取的文字前景和背景色彩
  • 使用中視窗標題前景和背景色彩
  • 非使用中視窗標題前景和背景色彩
  • 按鈕前景和背景色彩

解決方法

如果在高對比主題的應用程式中看到非預期的行為,下列其中一個解決方案可能會有説明:

  • 針對Windows 8顯示應用程式:

    應用程式資訊清單中未包含 Windows 8 < supportedOS > 標籤的應用程式,其工作區會轉譯為沒有主題。 內建應用程式應該全都包含應用程式資訊清單中的這個專案。 為Windows 8新增 4a2f28e3-53b9-4441-ba9c-d69d4a6e38 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所提供的所有內建主題中正確轉譯:Windows 8、基本、高對比 1、高對比 2、高對比黑色和高對比白色。 請確定文字在高對比主題中清楚可見且容易閱讀。

資源