点在一个区域内平滑移动问题
时间:2011-12-07
来源:互联网
那位高手能提供一个关于一个点在一定区域内能自由移动的小例子啊?感激不尽啊!
作者: ganggangban 发布时间: 2011-12-07
例子没有
在给定范围内画点,边画边擦
要不了几行代码
在给定范围内画点,边画边擦
要不了几行代码
作者: lgstudyvc 发布时间: 2011-12-07
例子没有,不过可以给个思路
1. 平滑移动,就是每两个点的位置只差一个点的大小,就是说两个点在x或y轴上的矢量差为1.
2. 画点
3. 重绘,重绘可以加在定时器里或者随便写一个sleep啥的,重绘的方式选对就ok了。
1. 平滑移动,就是每两个点的位置只差一个点的大小,就是说两个点在x或y轴上的矢量差为1.
2. 画点
3. 重绘,重绘可以加在定时器里或者随便写一个sleep啥的,重绘的方式选对就ok了。
作者: zero_226 发布时间: 2011-12-07
引用 1 楼 lgstudyvc 的回复:
例子没有
在给定范围内画点,边画边擦
要不了几行代码
例子没有
在给定范围内画点,边画边擦
要不了几行代码
C/C++ code
void COutput1::OnMouseMove(UINT nFlags, CPoint point) //这个后期能优化应该优化一下 { // TODO: Add your message handler code here and/or call default CRect NewRect;//移动后得到的新矩形 POINT OffSet;//计算移动的偏移量也就是看移动了多少 CRgn Move_Region; Move_Region.CreateRectRgnIndirect(CRect(50,57,795,249)); OffSet.x=point.x-MousePose.x;//计算出横抽的偏移量 OffSet.y=point.y-MousePose.y;//计算出纵轴的偏移量 if ((nFlags==MK_LBUTTON)&&(MouseDown_Flag==TRUE)&&Move_Region.PtInRegion(point))//限制移动的范围 { NewRect.left=m_ellipsRect[Ellips_Flag].left+OffSet.x; NewRect.right=NewRect.left+14; NewRect.top=m_ellipsRect[Ellips_Flag].top+OffSet.y; NewRect.bottom=NewRect.top+14; m_ellipsRect[Ellips_Flag]=NewRect; //更新原来矩形 MousePose=point; InvalidateRect(CRect(30,4,820,296)); //刷新示波器显示部分 Move_Region.DeleteObject(); //移除创建的区域 } CDialog::OnMouseMove(nFlags, point); }
其实这真没几行代码,上面是我写的,就是当点移动到那个矩形CRect(50,57,795,249));
边界的时候移动起来很不自由,磕磕板扳的 请高手指点一下 我该怎么改进啊。很感谢啊(我试了好多当到边界只能横向或纵向移动 老是有点问题),可能方法不对啊 谢谢了,高手指点一下 我不知该怎么整了。
作者: ganggangban 发布时间: 2011-12-07
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28