邏輯選擇區
邏輯調色盤是應用程式建立與指定裝置內容相關聯的調色盤。 邏輯調色盤可讓應用程式定義及使用符合其特定需求的色彩。 應用程式可以建立任意數目的邏輯選擇區,並將它們用於個別的裝置內容,或在單一裝置內容之間切換。 應用程式可建立的調色盤數目上限取決於系統的資源。
應用程式會使用 CreatePalette 函式建立邏輯選擇區。 應用程式會填入 LOGPALETTE 結構,它會指定每個專案的專案數目和色彩值,然後應用程式會將結構傳遞至 CreatePalette。 函式會傳回應用程式在所有後續作業中使用的調色盤控制碼,以識別調色盤。 若要在邏輯調色盤中使用色彩,應用程式會使用 SelectPalette 函式將調色盤選取到裝置內容,然後使用 RealizePalette 函式實現調色盤。 調色盤中的色彩會在邏輯調色盤實現時立即提供。
應用程式應該將邏輯調色盤的大小限制為足以代表所需色彩的專案。 應用程式無法建立大於調色盤大小上限的邏輯調色盤,也就是裝置相依值。 應用程式可以使用 GetDeviceCaps 函式來擷取 SIZEPALETTE 值,以取得大小上限。
雖然應用程式可以在邏輯調色盤中指定指定專案的任何色彩值,但並非所有色彩都可以由指定的裝置產生。 系統不提供一種方式來探索支援的色彩,但應用程式可以藉由擷取裝置的色彩解析度來探索這些色彩的總數。 以每圖元色彩位指定的色彩解析度等於 GetDeviceCaps 函式所傳回的 COLORRES 值。 色彩解析度為 18 的裝置有 262,144 個可能的色彩。 如果應用程式要求不支援的色彩,系統會選擇適當的近似值。
建立邏輯調色盤之後,應用程式就可以使用 SetPaletteEntries 函式變更調色盤中的色彩。 如果已選取並實現邏輯調色盤,變更調色盤並不會立即影響所顯示的色彩。 應用程式必須使用 UnrealizeObject 和 RealizePalette 函式來更新色彩。 在某些情況下,應用程式可能需要取消選取、虛化、選取並實現邏輯調色盤,以確保色彩會如要求一樣更新。 如果應用程式將邏輯選擇區選取為多個裝置內容,則邏輯調色盤的變更會影響其選取的所有裝置內容。
應用程式可以使用 ResizePalette 函式來變更邏輯調色盤中的專案數目。 如果應用程式減少大小,其餘專案會保持不變。 如果應用程式擴充大小,系統會將每個新專案的色彩設定為黑色 (0、0、0) ,並將旗標設定為零。
應用程式可以使用 GetPaletteEntries 函式,擷取指定邏輯調色盤中專案的色彩和旗標值。 應用程式可以使用 GetNearestPaletteIndex 函式,擷取指定邏輯調色盤中專案索引,最符合指定的色彩值。
當應用程式不再需要邏輯選擇區時,可以使用 DeleteObject 函式加以刪除。 在刪除調色盤之前,應用程式必須確定邏輯調色盤已不再選取到裝置內容中。