調色盤工作原理

2021-04-23 10:16:20 字數 1550 閱讀 4011

調色盤工作原理

顯示器可以被設定成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...