Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Windows;
- using System.Windows.Controls;
- using System.Windows.Input;
- using System.Windows.Media;
- using System.Windows.Shapes;
- namespace WpfApp2
- {
- /// <summary>
- /// Логика взаимодействия для MainWindow.xaml
- /// </summary>
- public partial class MainWindow : Window
- {
- public System.Windows.Threading.DispatcherTimer dispatcherTimer = new System.Windows.Threading.DispatcherTimer(); //Объявление таймера
- public TimeSpan interv = new TimeSpan(0, 0, 0, 0, 10); //Тик таймера
- public Random rand = new Random(); //рандом
- public int netCount = 100; //Кол-во точек
- public SolidColorBrush netColor = new SolidColorBrush(Color.FromRgb(105, 133, 255)); //Цвет точки
- public double[,] net = new double[100, 5]; //Кол-во точек и параметро(Да я дебил и не могу в одной переменной указать кол-во точек)
- // 0-x 1-y 2-visible 3-speedx 4-speedy
- public MainWindow()
- {
- InitializeComponent();
- }
- private void draw() //Отрисовка
- {
- CanvasMain.Children.Clear();
- for (int i = 0; i < netCount - 1; i++) // 0-x 1-y 2-visible 3-speedx 4-speedy //Перебор всего массива
- {
- Ellipse myEllipse = new Ellipse();
- myEllipse.Fill = netColor;
- myEllipse.Width = 5;
- myEllipse.Height = 5;
- if (net[i, 2] == 2) myEllipse.Opacity = 0; else { myEllipse.Opacity = 1; } //Прозрачность точки
- Canvas.SetLeft(myEllipse, net[i, 0]);
- Canvas.SetTop (myEllipse, net[i, 1]);
- CanvasMain.Children.Add(myEllipse); //Отрисовка точки
- }
- for (int i = 0; i < netCount - 1; i++) // 0-x 1-y 2-visible 3-speedx 4-speedy Перебор всего массива
- {
- for (int q = 0; q < netCount - 1; q++)
- {
- double katet1, katet2; //
- katet1 = net[i, 0] - net[q, 0]; if (katet1 < 0) katet1 = katet1 * -1; //
- katet2 = net[i, 1] - net[q, 1]; if (katet1 < 0) katet2 = katet2 * -1; // Вычисление расстояния до точки
- double gyp = Math.Sqrt( Math.Pow(katet1, 2)+Math.Pow(katet2, 2) ); //
- if (gyp < 100) //Если расстояние меньше 100
- {
- if (net[i, 2] == 1 || net[q, 2] == 1) { //Если видна точка то прорисовка линии
- Line line = new Line();
- line.Stroke = new SolidColorBrush(Color.FromRgb(255,255,255));
- line.X1 = net[i, 0]; //
- line.X2 = net[q, 0]; // Координаты от точки до точки
- line.Y1 = net[i, 1]; //
- line.Y2 = net[q, 1]; //
- line.StrokeThickness = 1;
- line.Opacity = 1/(gyp/2); //Прозрачность относительно расстояния до точки
- CanvasMain.Children.Add(line);
- }
- }
- }
- }
- }
- private void startnet() //Создание переменных
- {
- for (int i = 0; i < netCount - 1; i++) // 0-x 1-y 2-visible 3-speedx 4-speedy //Перебор всего массива
- {
- net[i, 0] = rand.Next(0, Convert.ToInt32(CanvasMain.Width));
- net[i, 1] = rand.Next(0, Convert.ToInt32(CanvasMain.Height));
- net[i, 2] = rand.Next( 1,4); //Видимость точки
- if (rand.Next(0, 2) == 1) net[i, 3] = rand.Next(1, 3); else net[i, 3] = rand.Next(-2, 0); //Скорость по х
- if (rand.Next(0, 2) == 1) net[i, 4] = rand.Next(1,3); else net[i, 4] = rand.Next(-2, 0); //Скорость по у
- }
- }
- private void updatenet() //Изменение переменных
- {
- for (int i = 0; i < netCount - 1; i++) // 0-x 1-y 2-visible 3-speedx 4-speedy
- {
- net[i, 0] = net[i, 0] + net[i, 3];
- net[i, 1] = net[i, 1] + net[i, 4];
- if (net[i, 0] > CanvasMain.Width || net[i, 0] < 0 || net[i, 1] > CanvasMain.Height || net[i, 1] < 0) //Если точка ушла за экран
- {
- net[i, 0] = rand.Next(0, Convert.ToInt32(CanvasMain.Width)); //
- net[i, 1] = rand.Next(0, Convert.ToInt32(CanvasMain.Height)); //Появление точки
- }
- }
- draw(); //Отрисовка
- }
- private void timer(int swit) //Активация/Деактивация таймера
- {
- dispatcherTimer.Interval = interv;
- if (swit == 1) dispatcherTimer.Start();
- else dispatcherTimer.Stop();
- }
- public void dispatcherTimer_Tick(object sender, EventArgs e) //Таймер
- {
- updatenet(); //Изминение переменных
- }
- private void Window_Loaded(object sender, RoutedEventArgs e) // Загрузска окна
- {
- dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick); //Не ебу что это работает не трож, что то связаное с таймером
- }
- private void Window_KeyDown(object sender, KeyEventArgs e) // Нажатие клавишы
- {
- switch (e.Key)
- {
- case Key.F:
- startnet(); //Создание переменных
- timer(1); //Активация таймера
- break;
- case Key.S:
- timer(0); //Деактивация таймера
- break;
- case Key.G: //Активация таймера
- timer(1);
- break;
- }
- }
- private void Window_SizeChanged(object sender, SizeChangedEventArgs e) //Если окно изменило размер
- {
- CanvasMain.Width = this.Width; //
- CanvasMain.Height = this.Height; //То размер Канваса = Окну
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement