在桌面上運行各種程序中,有很多色彩十分靓麗,我們有時也想使用它們的顏色,但苦於沒有源碼,所以很難准確知道它們的R、G、B顏色值。於是便產生了很多拾取屏幕顏色的工具,你想知道它們是怎麼用程序實現的麼?下面我就拿我用VC6.0做的一個屏幕顏色拾取器的實例代碼來告訴您,實例程序運行後的界面如下:
基本構成思想:
原理很簡單,只需要簡要的三步。既:獲取屏幕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
以上部分代碼的具體實現的細節問題,可在下載實例代碼後,仔細查看源碼既可(內有詳細注釋)。