程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> 關於VC++ >> 如何獲取屏幕上各顏色的紅、綠、藍值

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

編輯:關於VC++

在桌面上運行各種程序中,有很多色彩十分靓麗,我們有時也想使用它們的顏色,但苦於沒有源碼,所以很難准確知道它們的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

以上部分代碼的具體實現的細節問題,可在下載實例代碼後,仔細查看源碼既可(內有詳細注釋)。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved