Я использую в данном примере асинхронную задержку Delay(Время задержки в миллисекундах) для изменения размера Panel. Исходя из вопроса вы изменяете размер panel1 равному размеру panel2. Отметьте мой ответ если я вам помог.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Panel_Animation
{
public partial class Form1 : Form
{
Panel panel_animatoin;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
panel_animatoin = new Panel { Parent = this, Location = new Point(3, 3), Size = new Size(100, 100), BackColor = Color.DarkGray }; // Создаю панель
panel_animatoin.MouseHover += panel_animatoin_MouseHover; // Объявляю свойство MouseHover для панели
}
async void Animation_Async()
{
int Width = panel2.Size.Width; // Можно увеличить размер так: +10;
int Height = panel2.Size.Height; // Можно увеличить размер так: +10;
while (panel_animatoin.Size.Width <= Width) // Цикл будет выполняться пока ширина панели не станет равна Width
{
await Task.Delay(1); // Задержка в миллисекундах
panel_animatoin.Size = new Size(panel_animatoin.Width + 1, panel_animatoin.Size.Height); // Изменение ширины(X) Panel
}
while (panel_animatoin.Size.Height <= Height) // Цикл будет выполняться пока высота панели не станет равна Height
{
await Task.Delay(1); // Задержка в миллисекундах
panel_animatoin.Size = new Size(panel_animatoin.Width, panel_animatoin.Size.Height +1);// Изменение высоты(Y) Panel
}
}
private void panel_animatoin_MouseHover(object sender, EventArgs e)
{
Animation_Async();
}
}
}
`
– Tanatoz May 21 '21 at 17:25