weidagang2046的专栏

物格而后知致
随笔 - 8, 文章 - 409, 评论 - 101, 引用 - 0
数据加载中……

获取象素的RGB

HBITMAP   hBmp    =    ::LoadImage();      // 这里加载位图   
    
CDC   dc;   
dc.CreateCompatibleDC(NULL);   
CBitmap   
* pbmpTemp    =    dc.SelectObject(CBitmap::FormHandle(hBmp));   
    
dc.GetPixel(x,   y)     
// 这里取值   
    
dc.SelectObject(pbmpTemp);   
dc.DeleteDC(); 

posted on 2006-08-01 23:58 weidagang2046 阅读(441) 评论(1)  编辑  收藏 所属分类: Windows

评论

# re: 获取象素的RGB  回复  更多评论   

原理很简单,只需要简要的三步。既:获取屏幕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
2006-11-16 17:06 | weidagang2046

只有注册用户登录后才能发表评论。


网站导航: