通过GetPixel()函数获取鼠标点击处的象素颜色判断该点是否在曲线上
2008-08-21 22:59
435 查看
最近在做一个项目,项目中用到如何实时绘制曲线,同时要求鼠标点击处要判断该点是否在曲线上,在网上搜了些相关的资料,在这里非常感谢那些有心人!最后找到了一个方法,具体实现见下,希望对大家有些帮助:
void CGetPixelColorView::OnDraw(CDC* pDC)
{
CGetPixelColorDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
CPen pen(PS_SOLID,10,RGB(200,20,20));
CPen* oldPen=pDC->SelectObject(&pen);
pDC->MoveTo(0,0);
pDC->LineTo(500,500);
pDC->SelectObject(&oldPen);
}
void CGetPixelColorView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CDC* hdc=GetDC();//获取当前窗口的设备环境
COLORREF clcolor ;
clcolor=hdc->GetPixel(point);
byte r=GetRValue(clcolor);
byte g=GetGValue(clcolor);
byte b=GetBValue(clcolor);
if(r==200&&g==20&&b==20)
{
MessageBox("SUCCEED!");
}
ReleaseDC(hdc);
CView::OnLButtonDown(nFlags, point);
}
利用MFC创建一个单文档的项目,在OnDraw函数中添加上述代码,利用向导添加鼠标按下的响应,添加上述代码,当鼠标在线上点击时就会实现相应的操作。画笔比较粗是为了方便测试,如果设为1的话很不好点中,:)还有一点可以偷个懒:如果窗口中有要求颜色必须一样的,我们在设置的时候可以将颜色要求一样的地方R G B中的一个值设置只差一个象素,这样我们看上去颜色是一样的,但是计算机能区分出来他们,比如RGB(255,0,0)与RGB(254,0,0)看上去是一样的,但PC仍可以将R G B值分别提出来比较作出不同的响应。希望这些对大家有些帮助。
void CGetPixelColorView::OnDraw(CDC* pDC)
{
CGetPixelColorDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
CPen pen(PS_SOLID,10,RGB(200,20,20));
CPen* oldPen=pDC->SelectObject(&pen);
pDC->MoveTo(0,0);
pDC->LineTo(500,500);
pDC->SelectObject(&oldPen);
}
void CGetPixelColorView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CDC* hdc=GetDC();//获取当前窗口的设备环境
COLORREF clcolor ;
clcolor=hdc->GetPixel(point);
byte r=GetRValue(clcolor);
byte g=GetGValue(clcolor);
byte b=GetBValue(clcolor);
if(r==200&&g==20&&b==20)
{
MessageBox("SUCCEED!");
}
ReleaseDC(hdc);
CView::OnLButtonDown(nFlags, point);
}
利用MFC创建一个单文档的项目,在OnDraw函数中添加上述代码,利用向导添加鼠标按下的响应,添加上述代码,当鼠标在线上点击时就会实现相应的操作。画笔比较粗是为了方便测试,如果设为1的话很不好点中,:)还有一点可以偷个懒:如果窗口中有要求颜色必须一样的,我们在设置的时候可以将颜色要求一样的地方R G B中的一个值设置只差一个象素,这样我们看上去颜色是一样的,但是计算机能区分出来他们,比如RGB(255,0,0)与RGB(254,0,0)看上去是一样的,但PC仍可以将R G B值分别提出来比较作出不同的响应。希望这些对大家有些帮助。
相关文章推荐
- Android 之实用小代码-获取屏幕尺寸、判断是否是平板、文字颜色、点击效果、计算字宽等。
- unity3D基础学习 通过判断鼠标点击的是否是目标物体,物体旋转,滑动滚轮缩放拉近视角
- svn判断通过svnkit,获取最新的revision以及判断某个revsion是否存在
- 编写一个函数,从标准输入读取一列整数,把这些值存储于一个动态分配的数组中并返回这个数组。函数通过观察EOF判断输入列表是否结束。数组的第一个数是数组包含的值的个数,他的后面就是这些整数值。
- 判断网页是否存在,可以通过get_headers()函数
- PHP中通过HTTP_USER_AGENT判断是否为手机移动终端的函数代码
- 精确获取屏幕尺寸 判断是否是平板 文字根据状态更改颜色 android:textColor 背景色根据状态更改颜色 android:backgroup 启动APK的默认Activit
- PHP通过HTTP_USER_AGENT判断是否为手机移动终端的函数
- PHP中通过HTTP_USER_AGENT判断是否为手机移动终端的函数代码
- Android通过获取Ip的方法判断手机是否联网
- unity 判断鼠标或者手指是否点击在UI上
- svn判断通过svnkit,获取最新的revision以及判断某个revsion是否存在
- iOS获取手指点击背景图的坐标的颜色(亲测,不需要关心UIImageView的frame是否跟图片大小一样)
- 判断鼠标或者手指是否点击在UI上(用于应对不能点击UI的情况)
- 通过文件锁实现,程序开始运行时,先判断文件是否存在,若存在则表明该程序已经在运行了,如果不存在就用open函数创建该文件,程序退出时关闭文件并删除文件
- PHP中通过HTTP_USER_AGENT判断是否为手机移动终端的函数代码
- Js 获取鼠标对象 判断鼠标点击的是->左击、右击
- UGUI判断鼠标或者手指是否点击在UI上
- 工具——通过鼠标点击获取图像坐标
- 通过JS来判断页面控件是否获取焦点