无法用GetPixel函数取得窗口的RGB颜色?
发布网友
发布时间:2022-05-25 13:26
我来回答
共4个回答
热心网友
时间:2023-11-01 10:30
这是在一个对话框窗口中通过移动鼠标获取颜色值的实现代码,你可以参考:
void CGetRGBDlg::OnMouseMove(UINT nFlags, CPoint point)
{
//获取窗体DC
CDC *pDC = GetDC();
//获取颜色值
COLORREF cr = pDC->GetPixel(point);
//提取RGB分量
m_nR = GetRValue(cr);//R值
m_nG = GetGValue(cr);//G值
m_nB = GetBValue(cr);//B值
//显示RGB值
UpdateData(FALSE);
CDialog::OnMouseMove(nFlags, point);
}
如果还不明白我可以给你写个演示代码。
百度HI 找 我
热心网友
时间:2023-11-01 10:31
不可能出现的呀,我为什么可以获得呢?
只要你是WINDOWS操作系统,无论NT,98,XP,SERVER 2003,VISTA,全部支持这个函数。我还没发现不支持的。
MSDN的意思是告诉你,先用GetDeviceCaps查询,设备是否支持这个函数
热心网友
时间:2023-11-01 10:31
看看这个?
Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long) As Long
在VB中有了上边的函数,然后用下边的语句取一点的颜色值
color1 = GetPixel(Picture2.hdc, 100, 100)
R = getrvalue(color1)
B = getbvalue(color1)
G = getgvalue(color1)
但当上边的数值取较大的数值时,比如上边坐标数值大于1000后,值就取不出来了,请问高手是怎么回事?
X 和 Y 座标以像素pixel为单位。GetPixel 只能获取有效窗范围内的点的颜色值。不能获取 “current clipping region”以外的颜色值。
从GetPixel 的送返值可以判断函数调用是否失败。
把你的屏幕分辨率提高些,看看行不行。(至少要1024)因为你的座标值1000。(你说:“上边坐标数值大于1000后,值就取不出来了“)
参考资料:http://zhidao.baidu.com/question/24692860.html?si=2&wtp=wk
热心网友
时间:2023-11-01 10:32
100分啊,被人抢先了