調色盤工作原理
顯示器可以被設定成16、256、64k、真彩色等顯示模式,前兩種模式需要調色盤。在16或256色模式下,程式必須將想要顯示的顏色正確地設定到調色盤中,這樣才能顯示出預期的顏色。
如圖為乙個256色顯示模式中的調色盤的工作原理
createpalette
只是建立了邏輯調色盤,此時調色盤只是一張孤立的顏色表,還不能對系統產生影響。程式必需呼叫
cdc::selectpalette
把邏輯調色盤選入到要使用它的裝置上下文中,然後呼叫
cdc::realizepalette
把邏輯調色盤實現到系統調色盤中。函式的宣告為:
cpalette* selectpalette( cpalette* ppalette, bool bforcebackground );
該函式把指定的調色盤選擇到裝置上下文中。引數
ppalette
指向乙個
cpalette
物件。引數
bforcebackground
如果是true
,那麼被選擇的調色盤總是作為背景調色盤使用,如果
bforcebackground
是false
並且裝置上下文是附屬於某個視窗的,那麼當視窗是活動視窗或活動視窗的子視窗時,被選擇的調色盤將作為前景調色盤實現,否則作為背景調色盤實現。如果使用調色盤的是乙個記憶體裝置上下文,則該引數被忽略。函式返回裝置上下文原來使用的調色盤,若出錯則返回
null。
uint realizepalette( );
該函式把裝置上下文中的邏輯調色盤實現到系統調色盤中。函式的返回值表明調色盤對映表中有多少項被改變了。
如果某乙個視窗要顯示特殊的顏色,那麼一般應該在處理
wm_paint
訊息時實現自己的邏輯調色盤。也就是說,在
onpaint
或ondraw
函式中重繪以前,要呼叫
selectpalette
和realizepalette
。如果視窗顯示的顏色比較重要,則在呼叫
selectpalette
時應該指定
bforcebackground
引數為false。
前景調色盤具有使用顏色的最高優先順序,它有無條件占用系統調色盤
(20種保留顏色除外
)的權力,也就是說,如果需要,前景調色盤將覆蓋系統調色盤的
236個表項,而不管這些表項是否正被別的視窗使用。背景調色盤則無權破壞系統調色盤中的已使用項。
請讀者注意,前景調色盤應該是唯一。如果乙個活動視窗同時要實現幾個邏輯調色盤,那麼只能有乙個調色盤作為前景調色盤實現,也即在呼叫
cdc::selectpalette
時只能有乙個
bforcebackground
被指定為
false
,其它的
bforcebackground
必需為true
。通常是把具有輸入焦點的視窗的調色盤作為前景調色盤實現,其它視窗只能使用背景調色盤。如果活動視窗的子視窗全都使用前景調色盤,則會導致程式的死迴圈。
調色盤工作原理
來自於 http blog.csdn.net pkeel archive 2007 03 27 1542425.aspx 調色盤工作原理 顯示器可以被設定成16 256 64k 真彩色等顯示模式,前兩種模式需要調色盤。在16或256色模式下,程式必須將想要顯示的顏色正確地設定到調色盤中,這樣才能顯示...
lcd調色盤工作原理詳解
舉例如下 改變調色盤為一種顏色 輸入引數 color 顏色值,格式為0xaarrggbb aa為透明度 red color 19 0x1f green color 10 0x3f blue color 3 0x1f color red 11 green 5 blue 格式5 6 5 vd 0 23 ...
Linux LCD 驅動調色盤原理
舉例如下 red color 19 0x1f green color 10 0x3f blue color 3 0x1f color red 11 green 5 blue 格式5 6 5 vd 0 23 我們開發板只用了16位。frambuffer記憶體大小為2402320 硬體時序學習 vclk...