2013-07-22 3 views
1

Я хочу, чтобы метка двигаться слева от формы и остановки в центреПростое движение в C#

Я был в состоянии сделать это, используя

Timer tmr = new Timer(); 
    int locx = 6; 
    public Form1() 
    { 
     InitializeComponent(); 
     tmr.Interval = 2; 
     tmr.Tick += new EventHandler(tmr_Tick); 
    } 

    void tmr_Tick(object sender, EventArgs e) 
    { 
     label1.Location = new Point(locx, 33); 
     locx++; 
     if (locx == 215) 
     { 
      tmr.Stop(); 
     } 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     label1.Text = "QUICK SPARK"; 
     tmr.Start(); 
    } 

Я хочу знать, если есть ли лучший способ сделать это ??? ... Любая помощь будет оценена

+1

Какая версия C#? –

+0

Hans Passant имеет отличный ответ на встроенную функциональность окон для этого [здесь] (http://stackoverflow.com/a/6103677/1324033) – Sayse

ответ

4

Если вы используете VS 2012 и C# 5, вы можете сделать это просто через await/async:

private async void Form1_Load(object sender, EventArgs e) 
{ 
    label1.Text = "QUICK SPARK"; 

    for (int locx = 6; locx < 215; ++locx) 
    { 
     await Task.Delay(2); 
     label1.Location = new Point(locx, 33); 
    } 
} 
+0

Спасибо, но я на самом деле использую Visual-Studio-2005 и 2008 –

+1

@ Precious1tj Тогда ваш вариант, скорее всего, лучший. –

+0

Я думаю, что Рид прибил его, добавив еще одно предложение - это ваша форма статического размера или она изменена пользователем? Возможно, вам захочется вычислить среднюю точку, а не жестко кодировать ее. –

0

WinForm Анимация Библиотека [.Net3.5 +]

Простая библиотека для анимации элементов управления/значений в .NET WinForm (.Net 3.5 и выше). Основной кадр (Path) основан и полностью настраивается.

https://falahati.github.io/WinFormAnimation/

new Animator2D(
     new Path2D(new Float2D(-100, -100), c_control.Location.ToFloat2D(), 500)) 
    .Play(c_control, Animator2D.KnownProperties.Location); 

Это перемещает c_control контроль от -100, -100 до места он был на первом месте в 500 мс.

Смежные вопросы