2021国内久久精品_久久精品国产黑森林_日韩精品一二三四区_99re6这里只有精品视频

您好 [登錄] [免費注冊]
歡迎來到123儀器網!24年專注 · 正品保障 · 閃電發(fā)貨

檢測屏幕分辨率和顏色深度

2011-03-02

                                                     檢測屏幕分辨率和顏色深度

        全球紡織采購供應鏈色彩解決方案商——天友利,近幾年來,越來越多的頂尖零售商和服裝品牌廠家選擇天友利作為自己的優(yōu)選或共選色彩技術提供商。產品涉及行業(yè):塑料、 涂料、 紡織、 汽車、 化妝品、 數(shù)碼影像、 印前 、印刷、 油墨、 色覺測試、 包裝等。

---- Windows API函數(shù)GetDeviceCaps()可提供廣泛的關于設備背景的信息,其中包括屏幕分辨率和顏色深度。GUI程序設計允許將圖形元素作為抽象的對象,不管硬件設備的情況及用戶設置的選擇。這對大多數(shù)情況,比如典型的窗口畫面和設備無關位圖操作都能滿足。但是在某些特殊情況下將受到限制,程序員需要其它方法來獲得相關設備的實際情況信息。本文就介紹一獲取屏幕分辨率和顏色深度的應用程序。

---- 一、GetDeviceCaps()的功能

---- API函數(shù)GetDeviceCaps()可用來獲取設備的很多信息,它也就成為應用和設備驅動程序的網關。下列為它在wingdi.h中的原型:int GetDeviceCaps(HDC hdc,int nIndex);

---- 第一項參數(shù)是與檢測設備有關的設備背景,第二個參數(shù)表示檢測值。函數(shù)的具體功能在Win32SDK文件中有詳細介紹,本文集中介紹二個與顯示設備相關的特性:分辨率(水平和垂直)和能顯示的不同顏色數(shù)。這些值能分別由HORZRES,VERTRES和BITSPIXEL返回給 GetDeviceCaps()的第二個參數(shù)。BITSPIXEL返回描述一個像素顏色需要的位數(shù),要確定實際顏色數(shù)只要計算以2作為冪的返回值的指數(shù)。

---- 下列給出的C代碼就是檢測屏幕分辨率和顏色深度:

 屏幕dc初始化
HDC screenDC;
int colorBits, xRes, yRes;
screenDC = CreateDC(DISPLAY, NULL, NULL, NULL);
 檢索設備
colorBits = GetDeviceCaps(screenDC, BITSPIXEL);
xRes = GetDeviceCaps(screenDC, HORZRES);
yRes = GetDeviceCaps(screenDC, VERTRES);
 清除
DeleteDC(dc);

---- 從上述代碼看好象很簡單,而且這在大多數(shù)情況下是可行的,但當在32K彩色模式時就不行了,在這種情況下GetDeviceCaps()返回16而不是期望的15(2^15是32,768)。另外,32K和64K顏色之間的區(qū)別(兩者也作為高-顏色方式)不大,當用15bit設備顯示64K顏色位圖時 Windows應用抖動算法實現(xiàn)。那么,怎么能檢測32K顏色情況和將它與64K情況區(qū)別開
---- 二、開發(fā)SetPixel()函數(shù)功能

---- API函數(shù)比SetPixel(),以指定RGB顏色設置像素在設備背景上,還返回RGB值,而如果匹配不好的話,此返回的可能不是我們需要的顏色值。雖然,這一特性看上去沒什么用處,但你可用它解決GetDeviceCaps()對15位顏色模式返回16位問題。如果用提供的RGB值設置一像素的顏色,并比較其返回的COLORREF,就能確定設備是否支持那種顏色。將上述算法放入一循環(huán)中,使RGB組合不斷改變,設備既是視頻卡,計算比較值為真的次數(shù)有多少。

---- 顯然,用上述方法要對SetPixel()調用2^24次在時間上是不合理的,其實并不需要在所有可能的值之中重復,分別比較每個顏色組合(先紅色,然后綠色,然后藍色)也可產生相同的結果,并且迭代次數(shù)可減少到255次。

---- GetScrResolution()僅僅是對GetDeviceCaps(HORZRES)和GetDeviceCaps(VERTRES)的接連處理:

BOOL GetScrResolution(WORD pWidth, WORD pHeight)
{
HDC screenDC;
screenDC = CreateDC(DISPLAY, NULL, NULL, NULL);
if (!screenDC)
  return FALSE;

pWidth = GetDeviceCaps(screenDC, HORZRES);
pHeight = GetDeviceCaps(screenDC, VERTRES);

DeleteDC(screenDC);
return TRUE;
}

---- GetScrColorDepth()調用GetDeviceCaps(BITSPIXEL),但是,當API返回16時,它使用 GetScrRGBBitsPerPixel()來依次計算紅色、綠色和藍色組合。如果他們都等于32,API返回代碼16顯然是不正確的,而實際上因是 15。
BYTE GetScrColorDepth()
{
HDC screenDC;
BYTE numOfBits;

screenDC = CreateDC(DISPLAY, NULL, NULL, NULL);
if (!screenDC)
  return 0;
numOfBits = GetDeviceCaps(screenDC, BITSPIXEL);
DeleteDC(screenDC);

if (numOfBits == 16)
  {
        是否為64K色,或32K
  WORD red, green, blue;
  GetScrRGBBitsPerPixel(&red, &green, &blue);
  if (red == 32 && green == 32 && blue == 32)
               323232 = 2^15 色
   numOfBits = 15;
}

return numOfBits;
}

GetScrRGBBitsPerPixel()通過255次循環(huán)測
試設備支持的紅、綠色和藍色值。

BOOL GetScrRGBBitsPerPixel(WORD pRedBits,
                           WORD pGreenBits,
                           WORD pBlueBits)
{
BOOL isError = FALSE;
HDC screenDC, memDC;
HBITMAP bmp = NULL;
HBITMAP bmpOld = NULL;

pRedBits = pGreenBits = pBlueBits = 1;

screenDC = CreateDC(DISPLAY, NULL,
  NULL, NULL);
memDC = CreateCompatibleDC(NULL);
bmp = CreateCompatibleBitmap(screenDC, 1, 1);
isError = screenDC && memDC && bmp;
if (!isError)
  goto CleanUp;
   有時goto語句是處理出錯的一種很簡便的方法
bmpOld = (HBITMAP)SelectObject(memDC, bmp);

{
  COLORREF oldColor;
  COLORREF curColor = RGB(255, 255, 255);
  int n;
  for (n = 255; n = 0; --n)
  {
   oldColor = curColor;
   curColor = SetPixel(memDC,
   0, 0, RGB(n, n, n));
   isError = curColor;
   if (isError == CLR_INVALID)
   {
    isError = TRUE;
    goto CleanUp;
   }
    計算紅、綠和藍匹配情況
   if (GetRvalue(curColor)
    GetRvalue(oldColor))
    ++(pRedBits);
   if (GetGvalue(curColor)
    GetGvalue(oldColor))
    ++(pGreenBits);
   if (GetBvalue(curColor)
   GetBvalue(oldColor))
    ++(pBlueBits);
  }
}
CleanUp
  if (bmpOld)
   DeleteObject(bmpOld);
  if (bmp)
   DeleteObject(bmp);
  if (isError)
   pRedBits = pGreenBits
  = pBlueBits = 0;
  if (screenDC)
   DeleteDC(screenDC);
  if (memDC)
   DeleteDC(memDC);

  return !isError;
}

---- 可見GetScrRGBBitsPerPixel()不僅是解決本問題的核心,而且還可得到正使用的紅色、綠色和藍色各自的位數(shù)。例如,當有16位顏色時,哪一個顏色獲得6位,而不是另二個的5位,你可通過測試發(fā)現(xiàn),一般綠色成分多一些。

       深圳市天友利標準光源有限公司主營產品:標準光源對色燈箱、英國-美國標準光源箱、汽車檢測光源、鏡頭攝像頭測試用標準光源、印刷行業(yè)用標準光源、電腦測色儀、分光密度儀、色卡、分辨率卡、色溫照度計等光學儀器。

2021国内久久精品_久久精品国产黑森林_日韩精品一二三四区_99re6这里只有精品视频

        欧美在线不卡| 国产一区二区观看| 欧美在线视频一区二区| 久久欧美肥婆一二区| 你懂的成人av| 国产美女精品视频| 99国内精品| 久久综合久久久久88| 国产精品影片在线观看| 夜夜精品视频| 欧美精品一区二区蜜臀亚洲| 黄色日韩精品| 久久中文字幕一区| 国产一区在线播放| 香蕉久久夜色精品国产| 国产精品久久久久毛片大屁完整版 | 午夜精品一区二区三区在线| 欧美国产一区视频在线观看| 国产综合第一页| 久久精品国产一区二区三区免费看| 欧美日韩久久| 一区二区激情| 欧美午夜精品一区| 一区二区久久| 欧美日韩成人免费| 亚洲免费成人av| 欧美日韩成人在线播放| 日韩小视频在线观看| 欧美激情精品久久久久久久变态| 91久久在线| 欧美日韩亚洲一区二区三区在线| 99精品久久| 国产精品久久久久av| 亚洲在线视频一区| 国产亚洲在线| 欧美高清视频在线| 亚洲网站视频| 国产一区二区三区黄视频| 久久综合狠狠综合久久综青草| 亚洲高清激情| 欧美人与性禽动交情品| 亚洲一区二区三区精品动漫| 国产精品色午夜在线观看| 久久精品五月| 亚洲精品一级| 国产区在线观看成人精品| 美女图片一区二区| 中文在线一区| 韩日精品视频一区| 欧美日韩精品免费观看视一区二区 | 亚洲精品视频一区| 国产精品久久久久久久久久尿 | 国产日韩一区二区三区在线播放| 久久久精品国产免费观看同学| 精品69视频一区二区三区| 欧美激情aⅴ一区二区三区| 亚洲图片欧美午夜| 在线高清一区| 国产精品亚洲综合一区在线观看| 久热成人在线视频| 午夜精品福利电影| 亚洲经典在线看| 国产丝袜一区二区三区| 欧美美女视频| 久久天天躁狠狠躁夜夜av| 亚洲视频在线一区| 91久久久久久久久| 国内精品福利| 国产精品入口日韩视频大尺度| 欧美aⅴ99久久黑人专区| 香蕉久久夜色精品| 亚洲综合社区| 一区二区三区成人| 亚洲精品国产精品乱码不99| 国产性做久久久久久| 欧美日韩一区在线播放| 麻豆精品视频在线观看视频| 亚洲一区二区三区精品视频| 91久久国产综合久久91精品网站| 国产视频久久| 欧美三级日本三级少妇99| 欧美福利电影网| 中文亚洲字幕| 91久久久亚洲精品| 一区二区三区自拍| 国产一区二区中文| 国产日本亚洲高清| 国产免费一区二区三区香蕉精| 欧美日韩国产精品专区 | 在线精品福利| 国产精品入口麻豆原神| 国产精品国产a| 欧美午夜精品久久久| 欧美日本一道本在线视频| 欧美激情自拍| 欧美日韩国产一中文字不卡| 久久精品免费播放| 久久久精品五月天| 亚洲日本欧美在线| 亚洲激情在线视频| 亚洲精品视频免费观看| 99国产精品国产精品久久| 中文国产一区| 亚洲精品中文字幕在线观看| 亚洲人成在线观看一区二区| 亚洲国产精品电影| 亚洲精品免费一区二区三区| 99精品热视频| 欧美一区二区福利在线| 久久免费视频在线观看| 欧美高清视频在线| 欧美私人啪啪vps| 国产亚洲欧美日韩日本| 国产日韩欧美在线播放| 红桃视频一区| 激情欧美一区二区三区在线观看| 在线观看日韩av先锋影音电影院| 亚洲高清资源综合久久精品| 激情文学一区| 亚洲精品一区二区三区蜜桃久| 一本高清dvd不卡在线观看| 午夜国产精品影院在线观看| 性欧美超级视频| 欧美成人精品一区二区三区| 欧美午夜性色大片在线观看| 国产一区清纯| 中文网丁香综合网| 蜜桃av一区二区| 国产精品久久9| 亚洲国产乱码最新视频| 一本一本久久a久久精品综合麻豆| 亚洲在线中文字幕| 久久久精彩视频| 欧美日韩一区成人| 在线观看视频一区二区| 一区二区三区日韩| 欧美.日韩.国产.一区.二区| 国产视频亚洲| 亚洲尤物精选| 欧美日韩在线视频一区| 亚洲国产女人aaa毛片在线| 香蕉成人伊视频在线观看 | 亚洲黄色三级| 久久精品视频va| 国产精品久久久一区二区三区| 亚洲第一精品久久忘忧草社区| 亚洲欧美成aⅴ人在线观看| 欧美人与性动交α欧美精品济南到 | 亚洲电影免费观看高清完整版在线 | 欧美国产日本韩| 国产亚洲网站| 亚洲欧美中文在线视频| 欧美精品免费看| 亚洲激情偷拍| 久久精品国产亚洲一区二区| 欧美激情精品久久久久久变态| 国产在线一区二区三区四区| 99成人在线| 欧美激情久久久| 国产一区二区三区高清播放| 亚洲男女自偷自拍图片另类| 欧美少妇一区二区| 99精品视频免费在线观看| 久久亚洲精品中文字幕冲田杏梨| 国产欧美日韩激情| 欧美在线视频播放| 国产自产精品| 久久久www| 一区二区三区在线观看国产| 久久美女性网| 亚洲国产精品嫩草影院| 久久久999成人| 国产亚洲免费的视频看| 久久成人久久爱| 国产日韩欧美精品| 久久经典综合| 在线观看欧美亚洲| 欧美精品 国产精品| 日韩视频中文| 欧美性jizz18性欧美| 亚洲欧美福利一区二区| 狠狠色狠狠色综合日日小说| 欧美一区二区日韩一区二区| 激情欧美日韩一区| 欧美精品色综合| 午夜精品久久久| 国产日本亚洲高清| 欧美成人一区二区在线| 亚洲网站在线播放| 欧美亚一区二区| 欧美一级久久久久久久大片| 伊大人香蕉综合8在线视| 欧美日韩国产不卡| 久久av在线看| 伊人成人开心激情综合网| 女生裸体视频一区二区三区 | 国产精品久久久久一区二区三区 | 亚洲欧美在线磁力| 国产欧美日韩综合精品二区| 久久久精品午夜少妇|