След от кнопки(полоса за кнопкой)

263
09 декабря 2016, 08:46

Друзья, написал программу "Гонки кнопок", подскажите, что сделать, чтобы за каждой кнопкой шел след(линия):

 using System;
 using System.Collections.Generic;
 using System.ComponentModel;
 using System.Data;
 using System.Drawing;
 using System.Linq;
 using System.Text;
  using System.Threading.Tasks;
 using System.Windows.Forms;
 using System.Threading;
  namespace gonki
 {
public delegate void Helper(Button btn); //Помощник для манипулирования объектами из разных потоков
public partial class MainForm : Form
{
    Thread t1; // поток для движения 1 кнопки
    Thread t2; // поток для движения 2 кнопки
    Thread t3; // поток для движения 3 кнопки
    Random r; // для случайной скорости кнопок
    Button[] button; //Массив кнопок
    Helper helper;
    public MainForm()
    {
        InitializeComponent();
        button = new ButtonCompare[] { first_btn, second_btn, third_btn };
         helper = new Helper(Motion);
        r = new Random();
    }

    private void start_Click(object sender, EventArgs e)
    {
        pause.Enabled = true;
        stop.Enabled = true;
        ((Button)sender).Enabled = false;
        if (t1 != null) //Если потоки существуют, но приостановлены временно
        {
            t1.Resume();
            t2.Resume();
            t3.Resume();
            return;
        }          
            t1 = new Thread(Movement1);
            t2 = new Thread(Movement2);
            t3 = new Thread(Movement3);
        t1.IsBackground = t2.IsBackground = t3.IsBackground = true;
        t1.Start();
        t2.Start();
        t3.Start();
    }
    void Motion(Button button)
    {
        Going(button);
        Lider();

        Finish(button);
    }
    private void Going(Button button)
    {
        button.Location = new Point(button.Location.X + r.Next(10), button.Location.Y);
    }
    private void Finish(Button button)
    {
        if (button.Location.X > pictureBox1.Location.X - button.Width)
        {
            pause_Click(new object { }, new EventArgs { });
            start.Enabled = false;
        }
    }
    private void Lider()
    {
        Array.Sort(button);
        button[0].BackColor = Color.Yellow;
        for (int i = 1; i < button.Length; i++)
            button[i].BackColor = SystemColors.Control;
    }
    public void Movement1()
    {
        while(true)
        {
            Thread.Sleep(100);
            Invoke(helper, first_btn);
        }
    }
    public void Movement2()
    {
        while (true)
        {
            Thread.Sleep(100);
            Invoke(helper, second_btn);
        }
    }
    public void Movement3()
    {
        while (true)
        {
            Thread.Sleep(100);
            Invoke(helper, third_btn);
        }
    }
    private void pause_Click(object sender, EventArgs e)
    {
        pause.Enabled = false;
        start.Enabled = true;
            t1.Suspend();
            t2.Suspend();
            t3.Suspend();
    }
    private void stop_Click(object sender, EventArgs e)
    {
        pause.Enabled = false;
        stop.Enabled = false;
        pause_Click(sender,e);
        Reset();
    }
    private void Reset()
    {
        first_btn.Location = new Point(100, first_btn.Location.Y);
        second_btn.Location = new Point(100, second_btn.Location.Y);
        third_btn.Location = new Point(100, third_btn.Location.Y);
        foreach (ButtonCompare btn in button)
            btn.BackColor = SystemColors.Control;
    }
    private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
    {
        stop_Click(sender, new EventArgs());
    }
    private void pictureBox1_Click(object sender, EventArgs e)
    {
    }
}

}

READ ALSO
mimekit IMAP - Proxy C#

mimekit IMAP - Proxy C#

Доброго времени суток, я использую библиотеку mimekit, для работы с IMAPНо переискав весь интернет, я ничего толком и не нашел

1275
ASP.NET: серверные элементы управления (с префиксом ASP) обрабатываются на сервере через C#, VB или на клиенте, через JS?

ASP.NET: серверные элементы управления (с префиксом ASP) обрабатываются на сервере через C#, VB или на клиенте, через JS?

Допустим, имеется кнопка (не submit, а обычная кнопка), с префиксом asp (asp:button) и атрибутом runat = server

360
Распараллеливание списка

Распараллеливание списка

Добрый деньУ меня возникла следующая задача: я получаю список строк, после этого создаю экземпляр класса и вызываю в нём метод

369
html Как обрезать ссылку

html Как обрезать ссылку

Имеется строка:

421