用VC++ 画运动轨迹 利用moveto lineto 函数 比喻就像是从A点 移动到B点 其中要有一个运动过程。

如上所述。。。谢谢网上看到很多人推荐使用ontimer刷新的方式来处理这个也许会简单一点按照一楼的做法对于很长的线段(不一定是一条直线的情况)整个过程将会很麻烦虽然可行、... 如上所述。。。谢谢
网上看到 很多人推荐使用ontimer 刷新的方式来处理 这个也许会简单一点 按照一楼的做法 对于很长的线段(不一定是一条直线的情况) 整个过程将会很麻烦 虽然可行、、
我想知道的是怎样加入ontime 这个刷新函数、、、、
展开
 我来答
dengniyiqianni
2011-05-06 · TA获得超过316个赞
知道小有建树答主
回答量:213
采纳率:0%
帮助的人:317万
展开全部
一楼的方法能看到效果么?肯定不行,一个for循环下来,执行速度非常快,你根本看不到中间的变化,直接看到结果,一条从A到B的线。
利用class wiard加入对WM_TIMER消息的处理就行了,IDE为会你生成一个处理函数OnTimer。然后在初始化函数里SetTimer(1, 500,NULL);第一个参数表示定时器编号,用以区别一个程序的多个定时器。第二个参数表示定时间隔时间,以毫秒为单位。
最后你在OnTimer函数里写上(iSectionNum表示分多少步画完)
CClientDC dc(this); //也可以存为一个成员变量,这样就不用每次生成
dc.MoveTo( A.x+(B.x-A.x)*i/iSectionNum, A.y+(B.y-A.y)*i/iSectionNum);
dc.LineTo( A.x+(B.x-A.x)*(i+1)/iSectionNum, A.y+(B.y-A.y)*(i+1)/iSectionNum);
if(i<iSectionNum)
i++;
else
KillTimer(1);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
li668xiao
2011-05-05 · TA获得超过611个赞
知道小有建树答主
回答量:412
采纳率:61%
帮助的人:248万
展开全部
你试试这个思路:
把A点和B点之间的线段分成若干段,然后利用一个循环,每次画其中的一段,直到已经画到B点为止。大致代码如下:

POINT A;
POINT B;
int iSectionNum = ?;
A.x=???;
A.y=???;
B.x = ???;
B.y= ???;

for (i=0;i<iSectionNum; i++)
{
MoveToEx(hdc, A.x+(B.x-A.x)*i/iSectionNum, A.y+(B.y-A.y)*i/iSectionNum, NULL);
LineTo(hdc, A.x+(B.x-A.x)*(i+1)/iSectionNum, A.y+(B.y-A.y)*(i+1)/iSectionNum, NULL);
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bingsui54
2011-05-05 · TA获得超过304个赞
知道小有建树答主
回答量:667
采纳率:0%
帮助的人:292万
展开全部
else分支里实现,这样图形就具有保持功能要么自定义一个画图的函数在分支里调用 CClientDC dc(this); dc.MoveTo(0,0); dc.LineTo(100,100);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
daekow
2011-05-06 · TA获得超过378个赞
知道答主
回答量:195
采纳率:0%
帮助的人:72.2万
展开全部
//////////////////////////H文件中//////////////////////////
afx_msg void OnTimer(UINT nIDEvent);

////////////////////////CPP文件中/////////////////////////
BEGIN_MESSAGE_MAP(CTemperatureUpdateDlg, CDialog)
ON_WM_TIMER()
END_MESSAGE_MAP()

void CMyDialog::OnTimer(UINT nIDEvent)
{
if (nIDEvent == 0)
{

}

CDialog::OnTimer(nIDEvent);
}

///////////////////设置定时器//////////////////////
SetTimer(0, 1000, NULL);
///////////////////关闭定时器//////////////////////
KillTimer(0);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式