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