亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 16. 調色盤管理器.txt

?? 本書介紹了在Microsoft Windows 98、Microsoft Windows NT 4.0和Windows NT 5.0下程序寫作的方法
?? TXT
?? 第 1 頁 / 共 5 頁
字號:
調色盤管理器
 智能中國——游戲組  整理編譯   
 

--------------------------------------------------------------------------------

如果硬件允許,本章就沒有存在的必要。盡管許多現代的顯示卡提供24位顏色(也稱「true color」或「數百萬色」)或16位顏色(「增強色」或「數萬種顏色」),一些顯示卡-尤其是在便攜式計算機上或高分辨率模式中-每個圖素只允許8位。這意味著僅有256種顏色。

我們用256種顏色能做什么呢?很明顯,要顯示真實世界的圖像,僅16種顏色是不夠的,至少要使用數千或數百萬種顏色,256種顏色位于中間狀態。是的,用256種顏色來顯示真實世界的圖像足夠了,但需要根據特定的圖像來指定這些顏色。這意味著操作系統不能簡單地選擇「標準」系列的256種顏色,就希望它們對每個應用程序都是理想的顏色。

這就是Windows調色盤管理器所要涉及的全部內容。它用于指定程序在8位顯示模式下執行時所需要的顏色。如果知道程序肯定不會在8位顯示模式下執行,那么您也不需要使用調色盤管理器。不過,由于補充了位圖的一些細節,所以本章還是包含重要信息的。

使用調色盤


傳統上講,調色盤是畫家用來混合顏色的板子。這個詞也可以指畫家在繪畫過程中使用的所有顏色。在計算機圖形中,調色盤是在圖形輸出設備(例如視訊顯示器)上可用的顏色范圍。這個名詞也可以指支持256色模式的顯示卡上的對照表。

視頻硬件


顯示卡上的調色盤對照表運作過程如下圖所示:


 



在8位顯示模式中,每個圖素占8位。圖素值查詢包含256RGB值的對照表的地址。這些RGB值可以正好24位寬,或者小一點,通常是18位寬(即主要的紅、綠和藍各6位)。每種顏色的值都輸入到數字模擬轉換器,以得到發送給監視器的紅、綠和藍三個模擬信號。

通常,軟件可以用任意值來加載調色盤對照表,但這對設備無關的窗口接口,例如Microsoft Windows,會有一些干擾。首先,Windows必須提供軟件接口,以便在不直接干擾硬件的情況下,應用程序就可以存取調色盤管理器。第二個問題更嚴重:因為所有的應用程序都共享同一個視訊顯示器,而且同時執行,所以一個應用程序使用了調色盤對照表可能會影響其它程序的使用。

這時就需要使用Windows調色盤管理器(在Windows 3.0中提出)了。Windows保留了256種顏色中的20種,而允許應用程序修改其余的236種。(在某些情況下,應用程序最多可以改變256種顏色中的254種-只有黑色和白色除外-但這有一點麻煩)。Windows為系統保留的20種顏色(有時稱為20種「靜態」顏色)如表16-1所示。

表16-1 256種顏色顯示模式中的20種保留的顏色
 


圖素位
 RGB值
 顏色名稱
 圖素位
 RGB值
 顏色名稱
 
00000000
 00 00 00
 11111111
 FF FF FF
 
00000001
 80 00 00
 暗紅
 11111110
 00 FF FF
 
00000010
 00 80 00
 暗綠
 11111101
 FF 00 FF
 洋紅
 
00000011
 80 80 00
 暗黃
 11111100
 00 00 FF
 
00000100
 00 00 80
 暗藍
 11111011
 FF FF 00
 
00000101
 80 00 80
 暗洋紅
 11111010
 00 FF 00
 
00000110
 00 80 80
 暗青
 11111001
 FF 00 00
 
00000111
 C0 C0 C0
 亮灰
 11111000
 80 80 80
 暗灰
 
00001000
 C0 DC C0
 美元綠
 11110111
 A0 A0 A4
 中性灰
 
00001001
 A6 CA F0
 天藍
 11110110
 FF FB F0
 乳白色
 

在256種顏色顯示模式下執行時,由Windows維護系統調色盤,此調色盤與顯示卡上的硬件調色盤對照表相同。內定的系統調色盤如表16-1所示。應用程序可以通過指定「邏輯調色盤(logical palettes)」來修改其余236種顏色。如果有多個應用程序使用邏輯調色盤,那么Windows就給活動窗口最高優先權(我們知道,活動窗口有高亮顯示標題列,并且顯示在其它所有窗口的前面)。我們將用一些簡單的范例程序來檢查它是如何工作的。

要執行本章其它部分的程序,您可能需要將顯示卡切換成256色模式。在桌面上單擎鼠標右鍵,從菜單中選擇「屬性」,然后選擇「設定」頁面標簽。

顯示灰階


程序16-1所示的GRAYS1程序沒有使用Windows調色盤管理器,而嘗試用正常顯示的65級種階作為從黑到白的多種彩色的「來源」。

程序16-1 GRAYS1 
        
GRAYS1.C
        
/*---------------------------------------------------------------------------
        
  GRAYS1.C --   Gray Shades
        
                                                         (c) Charles Petzold, 1998
        
-----------------------------------------------------------------------------*/
        
#include <windows.h>
        
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
        
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
        
                          PSTR szCmdLine, int iCmdShow)
        
{
        
           static TCHAR szAppName[] = TEXT ("Grays1") ;
        
           HWND                          hwnd ;
        
           MSG                           msg ;
        
           WNDCLASS                      wndclass ;
        

           wndclass.style                               = CS_HREDRAW | CS_VREDRAW ;
        
           wndclass.lpfnWndProc                         = WndProc ;
        
           wndclass.cbClsExtra                          = 0 ;
        
           wndclass.cbWndExtra                          = 0 ;
        
           wndclass.hInstance                           =      hInstance ;
        
           wndclass.hIcon                              =      LoadIcon (NULL, IDI_APPLICATION) ;
        
           wndclass.hCursor                             =      LoadCursor (NULL, IDC_ARROW) ;
        
           wndclass.hbrBackground               =      (HBRUSH) GetStockObject (WHITE_BRUSH) ;
        
          wndclass.lpszMenuName                =      NULL ;
        
           wndclass.lpszClassName               =      szAppName ;
        

           if (!RegisterClass (&wndclass))
        
           {
        
                          MessageBox (  NULL, TEXT ("This program requires Windows NT!"),
        
                                         szAppName, MB_ICONERROR) ;
        
                        return 0 ;
        
           }
        
   
        
           hwnd = CreateWindow (szAppName, TEXT ("Shades of Gray #1"),
        
                              WS_OVERLAPPEDWINDOW,
        
                           CW_USEDEFAULT, CW_USEDEFAULT,
        
                           CW_USEDEFAULT, CW_USEDEFAULT,           
        
                          NULL, NULL, hInstance, NULL) ;
        
   
        
           ShowWindow (hwnd, iCmdShow) ;
        
           UpdateWindow (hwnd) ;
        
   
        
           while (GetMessage (&msg, NULL, 0, 0))
        
           {
        
                          TranslateMessage (&msg) ;
        
                          DispatchMessage (&msg) ;
        
         }
        
           return msg.wParam ;
        
}
        

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam,LPARAM lParam)
        
{
        
           static int            cxClient, cyClient ;
        
           HBRUSH                hBrush ;
        
           HDC                   hdc ;
        
           int                   i ;
        
           PAINTSTRUCT           ps ;
        
          RECT                  rect ;
        
   
        
           switch (message)
        
           {
        
           case   WM_SIZE:
        
                          cxClient = LOWORD (lParam) ;
        
                          cyClient = HIWORD (lParam) ;
        
                          return 0 ;
        
        
        
           case   WM_PAINT:
        
                          hdc = BeginPaint (hwnd, &ps) ;
        

                                                // Draw the fountain of grays
        

                          for (i = 0 ; i < 65 ; i++)
        
                          {
        
                                                 rect.left             = i * cxClient / 65 ;
        
                                                 rect.top              = 0 ;
        
                                                 rect.right            = (i + 1) * cxClient / 65 ;
        
                                                 rect.bottom           = cyClient ;
        

                                  hBrush = CreateSolidBrush (RGB(min (255, 4 * i),    
        
                                                          min (255, 4 * i),
        
                                                          min (255, 4 * i))) ;
        
                                                 FillRect (hdc, &rect, hBrush) ;
        
                                                 DeleteObject (hBrush) ;
        
                         }
        
                          EndPaint (hwnd, &ps) ;
        
                          return 0 ;
        

           case   WM_DESTROY:
        
                          PostQuitMessage (0) ;
        
                          return 0 ;
        
           }
        
           return DefWindowProc (hwnd, message, wParam, lParam) ;
        
}
        
在WM_PAINT消息處理期間,程序呼叫了65次FillRect函數,每次都使用不同灰階建立的畫刷。灰階值是RGB值(0,0,0)、(4,4,4)、(8,8,8)等等,直到最后一個值(255,255,255)。最后一個值來自CreateSolidBrush函數中的min宏。

如果在256色顯示模式下執行該程序,您將看到從黑到白的65種灰階,而且它們幾乎都用混色著色。純顏色只有黑色、暗灰色(128,128,128)、亮灰色(192,192,192)和白色。其它顏色是混合了這些純顏色的多位模式。如果我們在顯示行或文字,而不是用這65種灰階填充區域,Windows將不使用混色而只使用這四種純色。如果我們正在顯示位圖,則圖像將用20種標準Windows顏色近似。這時正如同您在執行最后一章中的程序的同時又加載了彩色或灰階DIB所見到的一樣。通常,Windows在位圖中不使用混色。

程序16-2所示的GRAYS2程序用較少的外部程序代碼驗證了調色盤管理器中最重要的函數和消息。

程序16-2 GRAYS2 
        
GRAYS2.C
        
/*---------------------------------------------------------------------------
        
  GRAYS2.C --   Gray Shades Using Palette Manager
        
                                                        (c) Charles Petzold, 1998
        
-----------------------------------------------------------------------------*/
        
#include <windows.h>
        
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
        
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
        
                                                                PSTR szCmdLine, int iCmdShow)
        
{
        
           static TCHAR szAppName[] = TEXT ("Grays2") ;
        
           HWND                          hwnd ;
        
           MSG                           msg ;
        
           WNDCLASS                      wndclass ;
        

           wndclass.style                               = CS_HREDRAW | CS_VREDRAW ;
        
           wndclass.lpfnWndProc                         = WndProc ;
        
           wndclass.cbClsExtra                          = 0 ;
        
           wndclass.cbWndExtra                          = 0 ;
        
           wndclass.hInstance                           = hInstance ;
        
           wndclass.hIcon                               = LoadIcon (NULL, IDI_APPLICATION) ;
        
           wndclass.hCursor                             = LoadCursor (NULL, IDC_ARROW) ;
        
           wndclass.hbrBackground              = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
        
           wndclass.lpszMenuName                = NULL ;
        
           wndclass.lpszClassName               = szAppName ;
        

           if     (!     RegisterClass (&wndclass))
        
           {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久久久久久久久久久久久99| 亚洲mv大片欧洲mv大片精品| 亚洲国产一区二区三区| 国内成+人亚洲+欧美+综合在线| 99久久精品一区| 777精品伊人久久久久大香线蕉| 国产精品色一区二区三区| 免费在线欧美视频| 色综合久久综合中文综合网| 国产三级欧美三级日产三级99 | 欧美丰满嫩嫩电影| 国产精品久久免费看| 精品一区免费av| 欧美高清hd18日本| 亚洲最快最全在线视频| 99久久精品一区| 国产精品天天看| 国产一区二区视频在线播放| 欧美日韩的一区二区| 亚洲精品国产成人久久av盗摄| 成人激情免费网站| 国产亚洲1区2区3区| 国产一区在线精品| 精品电影一区二区| 久久国产夜色精品鲁鲁99| 欧美日韩在线不卡| 午夜精品久久久久久久蜜桃app| 色综合久久综合中文综合网| 亚洲人成在线播放网站岛国| www.亚洲人| 日韩一区有码在线| 91玉足脚交白嫩脚丫在线播放| 国产精品不卡一区二区三区| jlzzjlzz亚洲女人18| 国产精品理伦片| 99精品偷自拍| 一区二区三区欧美久久| 欧美日韩免费高清一区色橹橹| 亚洲一区二区三区四区在线观看 | 国产精品一区专区| 久久久五月婷婷| 成人午夜电影网站| 亚洲乱码日产精品bd| 日本道精品一区二区三区| 亚洲一区二区av在线| 欧美国产亚洲另类动漫| 国产91精品免费| 国产精品国产三级国产a | 欧美色男人天堂| 午夜精品在线看| 欧美一级片免费看| 国产精品一区二区免费不卡| 亚洲国产成人一区二区三区| 91亚洲国产成人精品一区二三| 一区二区三区高清| 欧美一区二区三区性视频| 国产麻豆视频精品| 亚洲人亚洲人成电影网站色| 欧美日韩和欧美的一区二区| 久久国内精品自在自线400部| 国产欧美视频在线观看| 91久久免费观看| 久草这里只有精品视频| 国产精品二区一区二区aⅴ污介绍| 欧美丝袜自拍制服另类| 韩国中文字幕2020精品| 日韩理论电影院| 日韩一区二区电影| 99久久精品免费看| 日本va欧美va精品发布| 国产精品激情偷乱一区二区∴| 欧美色男人天堂| 国产成人鲁色资源国产91色综| 一区二区欧美在线观看| 2023国产精华国产精品| 91国偷自产一区二区使用方法| 美国欧美日韩国产在线播放| 亚洲精品你懂的| 久久久久久久综合色一本| 欧美色欧美亚洲另类二区| 国产麻豆91精品| 天天综合日日夜夜精品| 国产精品日韩成人| 日韩欧美久久一区| 91国产丝袜在线播放| 国产一区二区三区综合| 午夜国产精品影院在线观看| 中文字幕久久午夜不卡| 日韩欧美在线1卡| 在线观看国产一区二区| 成人激情电影免费在线观看| 毛片基地黄久久久久久天堂| 亚洲线精品一区二区三区八戒| 国产日韩精品久久久| 日韩免费视频一区二区| 欧美性大战久久久久久久 | 国产精品理论在线观看| 26uuu亚洲综合色| 91精品国产一区二区三区| 色综合久久中文字幕综合网| 91精品婷婷国产综合久久竹菊| 91小视频免费看| 粉嫩欧美一区二区三区高清影视| 美女网站色91| 久久精品国产成人一区二区三区 | 成人激情黄色小说| 精品一区二区三区久久| 日韩成人一级大片| 午夜在线成人av| 偷拍日韩校园综合在线| 亚洲va中文字幕| 午夜不卡av免费| 天天影视涩香欲综合网| 首页国产丝袜综合| 婷婷久久综合九色国产成人| 亚洲国产中文字幕在线视频综合 | 日本高清无吗v一区| 91美女在线观看| 日本久久电影网| 91行情网站电视在线观看高清版| 色综合久久天天| 欧美视频一区二区在线观看| 欧美日韩免费视频| 91精品国产综合久久香蕉麻豆| 欧美日韩国产不卡| 欧美一区二区久久| 久久综合九色综合97婷婷| 国产亚洲精品福利| 国产精品久久久久永久免费观看| 国产精品久久久一区麻豆最新章节| 中文字幕在线不卡视频| 一区二区三区在线免费观看| 午夜精品久久久久久| 美女任你摸久久| 成人一区二区三区视频在线观看| 成人国产精品免费观看视频| 色综合咪咪久久| 69堂精品视频| 久久久久久夜精品精品免费| 1000部国产精品成人观看| 亚洲一二三四久久| 久色婷婷小香蕉久久| 国产成人精品亚洲日本在线桃色| 97se亚洲国产综合自在线观| 欧美性三三影院| 久久美女艺术照精彩视频福利播放| 国产精品女主播在线观看| 亚洲一二三区在线观看| 精品无码三级在线观看视频| 成人av午夜电影| 8v天堂国产在线一区二区| 久久久久久一级片| 亚洲电影视频在线| 国产精品一区在线观看乱码| 色狠狠综合天天综合综合| 精品久久久久久最新网址| 1000部国产精品成人观看| 蜜桃精品在线观看| 91色在线porny| 亚洲精品在线观看网站| 亚洲综合免费观看高清完整版| 精品亚洲成av人在线观看| 一本久道中文字幕精品亚洲嫩| 欧美r级在线观看| 亚洲色图色小说| 国产一区二区三区久久久| 欧美影院午夜播放| 国产欧美日韩在线视频| 日本不卡在线视频| 91久久免费观看| 国产精品久久毛片av大全日韩| 日本在线不卡视频| 欧美午夜视频网站| 国产精品国模大尺度视频| 久久电影网站中文字幕| 欧美日韩一级片网站| 亚洲欧美日韩综合aⅴ视频| 国产精品白丝av| 日韩欧美在线123| 午夜国产精品一区| 欧美三级视频在线播放| 1024国产精品| 成人av网址在线| 久久婷婷综合激情| 男人的j进女人的j一区| 欧美日本乱大交xxxxx| 一区二区三区.www| 91免费视频观看| 亚洲男人的天堂在线观看| 不卡av在线网| 国产精品久久福利| thepron国产精品| 国产欧美精品一区| 国产成人免费在线观看| 国产区在线观看成人精品| 国精产品一区一区三区mba视频 | 老司机精品视频一区二区三区| 欧美日韩二区三区| 亚洲高清免费在线| 欧美日韩一区国产|