| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 900 人关注过本帖
标题:高分请教:怎么实现一个点沿某已知轨迹的动态移动过程???
只看楼主 加入收藏
ivanjoysky
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:22
专家分:137
注 册:2009-11-22
结帖率:66.67%
收藏
已结贴  问题点数:50 回复次数:7 
高分请教:怎么实现一个点沿某已知轨迹的动态移动过程???
就是一个点,一闪一闪的向目标点移动(是沿一个轨迹,比如直线)。
具体思路是怎么办的额?怎么实现?
谢谢。
搜索更多相关主题的帖子: 高分 动态 轨迹 
2010-04-14 15:30
ybjx1987
Rank: 3Rank: 3
来 自:武汉
等 级:论坛游侠
帖 子:26
专家分:175
注 册:2008-11-26
收藏
得分:0 
你可以用时间循环来实现点的移动,每一个循环画出下一个点,再把上一个点用底色覆盖掉。
2010-04-14 16:14
ivanjoysky
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:22
专家分:137
注 册:2009-11-22
收藏
得分:0 
回复 2楼 ybjx1987
好想要用到Ontimer吧,光用循环能行么?
有没相关程序的源码参考参考啊?
2010-04-14 16:21
ybjx1987
Rank: 3Rank: 3
来 自:武汉
等 级:论坛游侠
帖 子:26
专家分:175
注 册:2008-11-26
收藏
得分:20 
是要用到ontimer,首先定义一个全局CPoint变量 m_pt用以存储要画的点,建立一个Button用以SetTimer。再在OnTimer里面用SetPixel把m_pt处用底色覆盖,再改变m_pt的值,然后用你选的颜色在m_pt处画点。
ontimer中的代码
    CClientDC dc(this);
    if(nIDEvent==1)
    {
        dc.SetPixel(m_pt,RGB(255,255,255));
        m_pt.x+=1;
        m_pt.y+=1;
        dc.SetPixel(m_pt,RGB(255,0,0));
        if(m_pt.x>150)
        {
            dc.SetPixel(m_pt,RGB(255,255,255));
            m_pt.x=100;
点移动.rar (1.86 MB)

            m_pt.y=100;
        }
    }
    dc.DeleteDC();
2010-04-14 16:56
ivanjoysky
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:22
专家分:137
注 册:2009-11-22
收藏
得分:0 
回复 4楼 ybjx1987
ontimer函数是在settimer后,每隔一段时间自动被调用执行的函数。
你的思想就是画完一个点,然后再消除这个点 继续下一个点。这个方法我接受。
现在的需求是,已知一条直线的情况下,要求一个点沿这条直线按照你的方法执行下去
问题:1)怎么确定当前点的下一个点。
      2)怎么自动判断已达目的点,并停止ontimer的执行
您有什么想法么?
很高兴和你讨论!
2010-04-14 19:49
henry1985
Rank: 1
等 级:新手上路
帖 子:15
专家分:2
注 册:2009-3-19
收藏
得分:1 
settimer ontimer
2010-04-14 21:40
ivanjoysky
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:22
专家分:137
注 册:2009-11-22
收藏
得分:0 
回复 6楼 henry1985
能具体点么?
2010-04-15 16:02
ybjx1987
Rank: 3Rank: 3
来 自:武汉
等 级:论坛游侠
帖 子:26
专家分:175
注 册:2008-11-26
收藏
得分:29 
既然轨迹是已知的,那就可以计算出每一点的x坐标和y坐标。
比如假设点按y=x+1条直线移动,且100<x<150;
那么ontimer中的代码
    CClientDC dc(this);
    if(nIDEvent==1)
    {
        dc.SetPixel(m_pt,RGB(255,255,255));
        m_pt.x+=1;
        m_pt.y=m_pt.x+1;
        dc.SetPixel(m_pt,RGB(255,0,0));
        if(m_pt.x>150)
        {
            dc.SetPixel(m_pt,RGB(255,255,255));
            m_pt.x=100;
            m_pt.y=101;
        }
    }
    dc.DeleteDC();
2010-04-15 16:35
快速回复:高分请教:怎么实现一个点沿某已知轨迹的动态移动过程???
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028823 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved