Итак, проблема в том, что после того, как я закончил движение моей первой фигуры, я хочу начать перемещать мои другие фигуры, но когда я компилирую свою программу, они двигаются одновременно.Я попытался использовать 2 разных таймера, чтобы остановить первый и запустить другой, но результат будет одинаковым, или одна из фигур не будет двигаться вообще.Цель состоит в том, чтобы сделать иллюстрацию теоремы Пифагора.Вот моя программа:
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;
namespace WindowsFormsApp14
{
public partial class Form1 : Form
{
Bitmap myBitmap;
Graphics g;
int c = 147;
private int X1Green, X2Green, Y1Green, Y2Green;//These variables are the coordinates of the Green Triangle which will be used to move it
private int X1Blue, X2Blue;// These variables are the coordinates of the Blue Triangle which will be used to move it
private int Y1PaleGreen, Y2PaleGreen;//These variables are the coordinates of the Pale Green Triangle which will be used to move it
Timer timer1;
Timer timer2;
public Form1()
{
InitializeComponent();
X1Green = 450;
X2Green = 380;
Y1Green = 120;
Y2Green = 250;
X1Blue = 380;
X2Blue = 250;
Y1PaleGreen = 50;
Y2PaleGreen = 120;
}
private void Form1_Load(object sender, EventArgs e)
{
timer1 = new Timer();
timer1.Tick += new EventHandler(timer1_Tick);
timer1.Start();
timer2 = new Timer();
timer2.Tick += new EventHandler(timer2_Tick);
// timer2.Start();
}
private void timer1_Tick(object sender, EventArgs e)
{
// Moving the Green Triangle Diagonally to the Light Blue Triangle
if (Y1Green > 50) { Y1Green -= 3; }
if (X1Green > 320) { X1Green -= 5; }
if (X2Green > 250) { X2Green -= 5; }
if (Y2Green > 180) { Y2Green -= 3; }
Draw();
timer2.Start();
}
private void timer2_Tick(object sender, EventArgs e)
{
//Moving our Blue Triangle
if (X1Blue < 450) { X1Blue += 2; }
if (X2Blue < 320) { X2Blue += 2; }
//Moving our Pale Green Triangle
if (Y1PaleGreen < 180) { Y1PaleGreen += 4; }
if (Y2PaleGreen < 250) { Y2PaleGreen += 4; }
// Draw();
}
private void Draw()
{
int a = 70;
int b = 130;
//double c = Math.Sqrt(Math.Pow(a, 2) + Math.Pow(b, 2));
int c = 147;
myBitmap = new Bitmap(pictureBox1.Width, pictureBox1.Height);
Graphics g = Graphics.FromImage(myBitmap);
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
Pen mypen = new Pen(Color.Black, 2);// drawing the rectangle to illustrate inside of it the theorem of Pythagoras
g.DrawRectangle(mypen, 250, 50, 200, 200);
SolidBrush LightBlue = new SolidBrush(Color.LightBlue);
SolidBrush Blue = new SolidBrush(Color.Blue);
SolidBrush PaleGreen = new SolidBrush(Color.PaleGreen);
SolidBrush Green = new SolidBrush(Color.Green);
//Drawing the the Light Blue Triangle at the top left corner of the rectangle
g.FillPolygon(LightBlue, new Point[]{
new Point(250,50), new Point(250,180), new Point(320,50)
});
pictureBox1.BackgroundImage = myBitmap;
//Drawing the Pale Green Triangle at the top right corner of the rectangle
g.FillPolygon(PaleGreen, new Point[] {
new Point(320,Y1PaleGreen), new Point( 450,Y1PaleGreen ), new Point( 450, Y2PaleGreen)
});
//Drawing the Green Triangle at the bottom right corner of the rectangle
g.FillPolygon(Green, new Point[]
{
new Point( X1Green, Y1Green ), new Point( X1Green,Y2Green), new Point(X2Green,Y2Green)
});
//Drawing the Blue Triangle at the bottom left corner of the rectangle
g.FillPolygon(Blue, new Point[]
{
new Point(X1Blue,250), new Point(X2Blue,250), new Point(X2Blue,180)
});
}
}
}
Кстати, переменные a, b и ci записывали их только для напоминания себе, сколько составляет длина сторон каждого прямоугольного треугольника.