您的位置:首页 > 其它

VC获取屏幕上任意点位置的颜色

2012-08-05 20:53 525 查看
这篇文章其实参考了很多人的作品,在此就一一谢过了。

包括:

(1)动态设置控件的颜色

(2)获取鼠标位置

(3)CButtonST

程序的界面效果如下图:



源代码工程下载,不要分啊不要分http://download.csdn.net/detail/luofl1992/4478349

可以方便地获取屏幕上任意点位置的颜色。RGB表示。

有额外需要(比如在窗口最下化情况下的读取颜色)的话可以自己改写代码。

关键点是设置一个定时器,然后在定时器函数中进行如下设置即可:

void CGetScreenPixelDlg::OnTimer(UINT_PTR nIDEvent)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
//	DWORD   dwPos = GetMessagePos(); 
//	CPoint point( LOWORD(dwPos),   HIWORD(dwPos) );
//	HWND hwnd=::GetForegroundWindow();
	CPoint   point; 
	GetCursorPos(&point);
	HDC hDC = ::GetDC(NULL);  

	// 再获取当前鼠标位置像素值
	COLORREF color = ::GetPixel(hDC, point.x, point.y);	
	// 设置中间显示的文字处的背景色(非黑色地方)
	m_colorState.SetBkColor(color);
	// 下面的都是设置对应文本控件的数值
	posx = point.x;
	posy = point.y;
	red = GetRValue(color);
	green = GetGValue(color);
	blue = GetBValue(color);
	UpdateData(FALSE);		// 文本控件的数值显示
	CDialogEx::OnTimer(nIDEvent);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: