如何獲取螢幕上各顏色的紅 綠 藍值

2021-06-21 22:08:20 字數 727 閱讀 5081

在桌面上執行各種程式中,有很多色彩十分靚麗,我們有時也想使用它們的顏色,但苦於沒有原始碼,所以很難準確知道它們的r、g、b顏色值。於是便產生了很多拾取螢幕顏色的工具,你想知道它們是怎麼用程式實現的麼?下面我就拿我用vc6.0做的乙個螢幕顏色拾取器的例項代ma  

來告訴您,例項程式執行後的介面如下: 

基本構成思想: 

原理很簡單,只需要簡要的三步。既:獲取螢幕dc、得到當前滑鼠所在的畫素值、分解出畫素值中的紅、綠、藍三色既可,很簡單吧!

關鍵**實現:

1、 獲取螢幕dc

hdc hdc = ::getdc(null); //獲取螢幕dc 

2、 獲取當前滑鼠位置畫素值

cpoint pt;

getcursorpos(&pt);        //得到當前滑鼠所在位置

colorref clr = ::getpixel(hdc, pt.x, pt.y); //獲取當前滑鼠點畫素值 

3、 分解出畫素點中的紅、綠、藍顏色值

cstring clrtext;

clrtext.format("%d",getrvalue(clr));     //分解出紅色值

clrtext.format("%d",getgvalue(clr)); //分解出綠色值

clrtext.format("%d",getbvalue(clr)); //分解出藍色值

::releasedc(null, hdc); //釋放螢幕dc

取出螢幕上某個畫素的顏色值

為了取出螢幕上某點畫素的顏色,常常使用gdi函式getpixel,其原形如下 colorref getpixel hdchdc handle to dc intnxpos x coordinate of pixel intnypos y coordinate of pixel getpixel 的效...

C 獲取螢幕滑鼠所指點的顏色

有時候要獲取螢幕某一點的座標顏色值,可以如下實現 在vs2012中建立乙個c 的windows視窗應用程式,然後在form上新增picturebox和button兩個控制項,並加入以下 需要這個命名空間 using system.runtime.interopservices dllimport u...

獲取螢幕上正在顯示的activity

用過activitymanager的童鞋估計都知道,可以從activitymanager裡面可以獲取到當前執行的所有任務,所有程序和所有服務,這是任務管理器的核心。那麼,從裡面我們可以發掘點什麼出來嗎?仔細看getrunningtasks的文件,裡面說獲取的是系統中 running 的所有task,...