求教一个问题,我有一个控件,需要从一个位置自动飞到另外一个位置,我怎么来控制这个飞的速度.

时间:2021-12-26 10:54:18
求教一个问题,我有一个控件,需要从一个位置自动飞到另外一个位置,我怎么来控制这个飞的速度. 


问题就是这样,求教。

7 个解决方案

#1


用Timer把,不断更改控件的Location。

#2


       int i = 402;//初始横坐标位置
        private void timer1_Tick(object sender, EventArgs e)
        {
            label1.Location = new System.Drawing.Point(i, 47);
            i++;//增加横坐标位置每次加1
            if(i==589) //到达一定位置后还原
                i=402;
        }

#3


引用 2 楼  的回复:
       int i = 402;//初始横坐标位置
        private void timer1_Tick(object sender, EventArgs e)
        {
            label1.Location = new System.Drawing.Point(i, 47);
            i++;//增加横坐标位置每次加1
 ……


把timer的Intervl设置一下,那个就是控制速度的,默认是1000ms,

#4


整点有趣的嘛。。2 楼的语句改成


// i++;
i = timeCount * acceleration;
timeCount++;


timeCount 用来保存经过的时间,acceleration 是运动加速度。。

#5


用Timer来实现,通过Interval来设置飞行的速度,在Timer的事件中写代码:

this.Controls[0].Top+=10;
this.Controls[0].Left+=10;

#6


引用 2 楼  的回复:
       int i = 402;//初始横坐标位置
        private void timer1_Tick(object sender, EventArgs e)
        {
            label1.Location = new System.Drawing.Point(i, 47);
            i++;//增加横坐标位置每次加1
 ……


感谢给位积极回答,让小生感动万分,其实用Timer我也早就想到,但是有点耗资源,因为我是同时飞很多个(多少我不清楚,看情况,一般我测试是>10)窗体有点闪呢。也想到用一个后台Thread来集中控制的。只是想想有没更方便的方法,比如有没一些WinAPI可以实现的。

#7


你做游戏啊。。直接画吧,别用控件飞了。。

#1


用Timer把,不断更改控件的Location。

#2


       int i = 402;//初始横坐标位置
        private void timer1_Tick(object sender, EventArgs e)
        {
            label1.Location = new System.Drawing.Point(i, 47);
            i++;//增加横坐标位置每次加1
            if(i==589) //到达一定位置后还原
                i=402;
        }

#3


引用 2 楼  的回复:
       int i = 402;//初始横坐标位置
        private void timer1_Tick(object sender, EventArgs e)
        {
            label1.Location = new System.Drawing.Point(i, 47);
            i++;//增加横坐标位置每次加1
 ……


把timer的Intervl设置一下,那个就是控制速度的,默认是1000ms,

#4


整点有趣的嘛。。2 楼的语句改成


// i++;
i = timeCount * acceleration;
timeCount++;


timeCount 用来保存经过的时间,acceleration 是运动加速度。。

#5


用Timer来实现,通过Interval来设置飞行的速度,在Timer的事件中写代码:

this.Controls[0].Top+=10;
this.Controls[0].Left+=10;

#6


引用 2 楼  的回复:
       int i = 402;//初始横坐标位置
        private void timer1_Tick(object sender, EventArgs e)
        {
            label1.Location = new System.Drawing.Point(i, 47);
            i++;//增加横坐标位置每次加1
 ……


感谢给位积极回答,让小生感动万分,其实用Timer我也早就想到,但是有点耗资源,因为我是同时飞很多个(多少我不清楚,看情况,一般我测试是>10)窗体有点闪呢。也想到用一个后台Thread来集中控制的。只是想想有没更方便的方法,比如有没一些WinAPI可以实现的。

#7


你做游戏啊。。直接画吧,别用控件飞了。。