

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、調色板調色板概述調色板概述每個應用程序都有自己的調色板使用調色板時要先向系統(tǒng)申請調色板分為前臺調色板和后臺調色板windows為優(yōu)先級高的程序分配前臺調色板.我們經常會發(fā)現當啟動一個大一點的程序時桌面和其他應用程序的顏色變得粗糙起來就是因為其他應用程序的調色板正在轉為后臺調色板.Windows系統(tǒng)內部保留了一個20種顏色的調色板用來顯示窗口菜單等通用界面每個設備上下文都擁有一個邏輯調色板如果要使用內部系統(tǒng)調色板(20種顏色)之外的顏色則
2、應該創(chuàng)建一個新的邏輯調色板并將其選入到設備上下文中.再把設備上下文中的邏輯調色板實現到系統(tǒng)調色板中新的顏色才能實現.在邏輯調色板被實現到系統(tǒng)調色板時Windows會建立一個調色板映射表當設備上下文用邏輯調色板中的顏色繪圖時GDI繪圖函數會查詢調色板映射表以把像素值從邏輯調色板的索引轉換成系統(tǒng)調色板的索引.創(chuàng)建調色板BOOLCreatePalette(LPLOGPALETTElpLogPalette)其中l(wèi)pLogPalette是一個指向
3、LOGPALETTE結構的指針typedefstructtagLOGPALETTEWDpalVersionwindows版本號一般是0x300WDpalNumEntries調色板中顏色表項的數目PALETTEENTRYpalPalEntry[1]每個表項的顏色和使用方法LOGPALETTEtypedefstructtagPALETTEENTRYBYTEpeRed紅(0255)BYTEpeGreen綠BYTEpeBlue藍BYTEpeFl
4、ags一般為0PALETTEENTRY上面只是建立了一個邏輯調色板而邏輯調色板只是一張孤立的顏色表并不能對系統(tǒng)產生影響所以要使用調色板還需要下面這些函數CPalettePalette(CPalettepPaletteBOOLbFceBackground)這個函數用來將一個調色板載入設備上下文第一個參數是一個調色板指針第二個參數用來指定調色板作為前景色還是背景色使用為TURE時作為背景色使用為FALSE時當窗口是活動窗口或活動窗口的子窗口
5、是調色板將做為前景色使用否則做為背景色來使用.如果使用調色板的是一個內存設備上下文則該參數被忽略.UINTRealizePalette()該函數把設備上下文中的邏輯調色板實現到系統(tǒng)調色板中函數的返回值表明調色板映射表中有多少項被改變了這兩個函數的使用如下:CPalettepOldPaletteCWindowDCdc(this)pOldPalette=dc.Palette(Windows是一個多任務操作系統(tǒng),可以同時運行多個程序。如果有幾
6、個程序都要設置調色板,就有可能產生沖突。為了避免這種沖突,Windows使用邏輯調色板邏輯調色板來作為使用顏色的應用程序和系統(tǒng)調色板(物理調色板)之間的緩沖。圖11.1調色板工作原理在Windows中,應用程序是通過一個或多個邏輯調色板來使用系統(tǒng)調色板(物理調色板)。在256色系統(tǒng)調色板中,Windows保留了20種顏色作為靜態(tài)顏色,這些顏色用作顯示Windows界面,應用程序一般不能改變。缺省的系統(tǒng)調色板只包含這20種靜態(tài)顏色,調色板
7、的其它項為空。應用程序要想使用新的顏色,必須將包含有所需顏色的邏輯調色板實現到系統(tǒng)調色板中。在實現過程中,Windows首先將邏輯調色板中的項與系統(tǒng)調色板中的項作完全匹配,對于邏輯調色板中不能完全匹配的項,Windows將其加入到系統(tǒng)調色板的空白項中,系統(tǒng)調色板總共有236個空白項可供使用,若系統(tǒng)調色板已滿,則Windows將邏輯調色板的剩余項匹配到系統(tǒng)調色板中盡可能接近的顏色上。每個設備上下文都擁有一個邏輯調色板,缺省的邏輯調色板只有
8、20種保留顏色,如果要使用新的顏色,則應該創(chuàng)建一個新的邏輯調色板并將其選入到設備上下文中。但光這樣還不能使用新顏色,程序只有把設備上下文中的邏輯調色板實現到系統(tǒng)調色板中,新的顏色才能實現。在邏輯調色板被實現到系統(tǒng)調色板時,Windows會建立一個調色板映射表。當設備上下文用邏輯調色板中的顏色繪圖時,GDI繪圖函數會查詢調色板映射表以把像素值從邏輯調色板的索引轉換成系統(tǒng)調色板的索引,這樣當像素被輸出到視頻內存中時就具有了正確的顏色值。圖1
9、1.2說明了這種映射關系,從圖中讀者可以體會到邏輯調色板的緩沖作用。在該圖中,GDI繪圖函數使用邏輯調色板的索引1中的顏色來繪圖,通過查詢調色板映射表,得知系統(tǒng)調色板中的第23號索引與其完全匹配,這樣實際輸出到視頻內存中的像素值是23。注意圖中還演示了顏色的不完全匹配,即邏輯調色板中的索引15和系統(tǒng)調色板中的索引46。每個要使用額外顏色的窗口都會實現自己的邏輯調色板,邏輯調色板中的每種顏色在系統(tǒng)調色板中都有相同或相近的匹配。調色板的實現
10、優(yōu)先權越高,匹配的精度也就越高。Windows規(guī)定,活動窗口的邏輯調色板(如果有的話)具有最高的實現優(yōu)先權。這是因為活動窗口是當前與用戶交互的窗口,應該保證其有最佳的顏色顯示。非活動窗口的優(yōu)先權是按Z順序自上到下確定的(Z順序就是重疊窗口的重疊順序)?;顒哟翱谟袡鄬⑵溥壿嬚{色板作為前景調色板實現,非活動窗口則只能實現背景調色板。提示:術語活動窗口(Activewindow)或前臺窗口(Fegroundwindow)是指當前與用戶交互的窗
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論