MFC在鼠标点击位置画实心圆
CPointpt;GetCursorPos(&pt);CClientDCClientDC(this);CBrushbrush,*oldbrush;brush.Create...
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);
用这段代码画的圆跟鼠标点击位置相差很远很远,这是为什么?怎么改正?
我是新手,代码都是复制来的,希望说的浅显一点,先谢谢了。 展开
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);
用这段代码画的圆跟鼠标点击位置相差很远很远,这是为什么?怎么改正?
我是新手,代码都是复制来的,希望说的浅显一点,先谢谢了。 展开
4个回答
展开全部
出现这个问题又两个原因:
1、你获取鼠标坐标的方法不对,不应该用GetCursorPos()方法,而是在响应鼠标按下事件的消息响应函数中有一个特定的参数记录的当前鼠标按下时的坐标。
2、就是一个客户区坐标和屏幕坐标的差别问题,两者因为使用了不同的坐标系,实际的位置会有差异。你需要使用ScreenToClient这样的函数将屏幕坐标转换为客户区坐标。
建议你去看一下这两节视频,看完后你的问题就迎刃而解:
孙鑫VC++由入门到精通:第4章 简单绘图
孙鑫VC++由入门到精通:第10章 绘图控制
1、你获取鼠标坐标的方法不对,不应该用GetCursorPos()方法,而是在响应鼠标按下事件的消息响应函数中有一个特定的参数记录的当前鼠标按下时的坐标。
2、就是一个客户区坐标和屏幕坐标的差别问题,两者因为使用了不同的坐标系,实际的位置会有差异。你需要使用ScreenToClient这样的函数将屏幕坐标转换为客户区坐标。
建议你去看一下这两节视频,看完后你的问题就迎刃而解:
孙鑫VC++由入门到精通:第4章 简单绘图
孙鑫VC++由入门到精通:第10章 绘图控制
展开全部
GetCursorPos(&pt);获取的是屏幕坐标
要获取鼠标点击位置 鼠标按下函数里记录点的位置就行
要获取鼠标点击位置 鼠标按下函数里记录点的位置就行
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以添鼠标单击的事件函数。
OnLButtonUp(UINT nFlags, CPoint point)
point即包涵鼠标点击的X,Y坐标。然后以此为圆心就OK了!
OnLButtonUp(UINT nFlags, CPoint point)
point即包涵鼠标点击的X,Y坐标。然后以此为圆心就OK了!
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
GetCursorPos(&pt);这函数检取光标的位置,以屏幕坐标表示。
你应该是获取客户区坐标,用这个函数GetClientRect(LPRECT lpRect)
你应该是获取客户区坐标,用这个函数GetClientRect(LPRECT lpRect)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询