CPoint pt;
GetCursorPos(&pt);
CClientDC ClientDC(this);
CBrush brush,*oldbrush;
brush.CreateSolidBrush(RGB(0,0,0));
oldbrush=ClientDC.SelectObject(&brush);
ClientDC.Ellipse(pt.x-15,pt.y-15,pt.x+15,pt.y+15);
ClientDC.SelectObject(oldbrush);
用这段代码画的圆跟鼠标点击位置相差很远很远,这是为什么?怎么改正?
我是新手,代码都是复制来的,希望说的浅显一点,先谢谢了。
出现这个问题又两个原因:
1、你获取鼠标坐标的方法不对,不应该用GetCursorPos()方法,而是在响应鼠标按下事件的消息响应函数中有一个特定的参数记录的当前鼠标按下时的坐标。
2、就是一个客户区坐标和屏幕坐标的差别问题,两者因为使用了不同的坐标系,实际的位置会有差异。你需要使用ScreenToClient这样的函数将屏幕坐标转换为客户区坐标。
建议你去看一下这两节视频,看完后你的问题就迎刃而解:
孙鑫VC++由入门到精通:第4章 简单绘图
孙鑫VC++由入门到精通:第10章 绘图控制
1、你获取鼠标坐标的方法不对,不应该用GetCursorPos()方法,而是在响应鼠标按下事件的消息响应函数中有一个特定的参数记录的当前鼠标按下时的坐标。
2、就是一个客户区坐标和屏幕坐标的差别问题,两者因为使用了不同的坐标系,实际的位置会有差异。你需要使用ScreenToClient这样的函数将屏幕坐标转换为客户区坐标。
建议你去看一下这两节视频,看完后你的问题就迎刃而解:
孙鑫VC++由入门到精通:第4章 简单绘图
孙鑫VC++由入门到精通:第10章 绘图控制
温馨提示:答案为网友推荐,仅供参考
第1个回答 推荐于2017-12-16
GetCursorPos(&pt);获取的是屏幕坐标
要获取鼠标点击位置 鼠标按下函数里记录点的位置就行本回答被提问者采纳
要获取鼠标点击位置 鼠标按下函数里记录点的位置就行本回答被提问者采纳
第2个回答 推荐于2018-03-23
可以添鼠标单击的事件函数。
OnLButtonUp(UINT nFlags, CPoint point)
point即包涵鼠标点击的X,Y坐标。然后以此为圆心就OK了!本回答被网友采纳
OnLButtonUp(UINT nFlags, CPoint point)
point即包涵鼠标点击的X,Y坐标。然后以此为圆心就OK了!本回答被网友采纳
第3个回答 2011-05-13
GetCursorPos(&pt);这函数检取光标的位置,以屏幕坐标表示。
你应该是获取客户区坐标,用这个函数GetClientRect(LPRECT lpRect)
你应该是获取客户区坐标,用这个函数GetClientRect(LPRECT lpRect)