我一直试图对此进行编码一段时间,经过几周的网络搜索后,我决定提问
我想要做的就是当鼠标悬停在它上面时,逐渐将pictureBox1的大小调整为可变起始值的设定限制,我得到的最远的是使用forloop,这使得它立即改变大小。我想同时也改变高度和宽度(pictureBox1将是一个正方形,我只是希望它是一个更大的正方形,有一点平滑的运动)
一旦鼠标离开pictureBox1,我还需要它逐渐变回原来的大小。
我一直在玩网站上的几个解决方案,但似乎没有一个正常工作,你也可能需要知道我有两个表格涉及这个代码; Form1和frmMenu,由于大量的错误,我评论了最后两种方法。
我没有收到任何错误,但它不起作用。
public partial class frmMenu : Form
{
//private int size = 100;
public Timer timer1;
public frmMenu()
{
InitializeComponent();
pictureBox1.MouseEnter += new EventHandler(pictureBox1_MouseEnter);
//pictureBox1.MouseLeave += new EventHandler(pictureBox1_MouseLeave);
}
private string frmMenu_Load
{
set
{
timer1.Interval = 1;
}
}
private void pictureBox1_MouseEnter(object sender, EventArgs e)
{
//for (int i = 140; i > size; size++)
//{
//}
{
timer1.Interval = 1;
}
timer1.Enabled = true;
if (pictureBox1.Height <= 140)
{
pictureBox1.Size = new Size(pictureBox1.Size.Width, pictureBox1.Size.Height + 1);
}
else
{
timer1.Enabled = false;
}
}
// private void pictureBox1_MouseLeave(object sender, EventArgs e)
// {
// if (size > 100)
// for (int i = size; i > 100; i--)
// {
// size = i;
// }
// pictureBox1.Height = pictureBox1.Width = size;
// }
// private void pictureBox1_Click(object sender, EventArgs e)
// {
// var Form1 = new Form1();
// Form1.Show();
// var Menu = new frmMenu();
// Menu.Close();
// }
}
如果我没有提供足够的信息,这是我第一次这么抱歉^。^
答案 0 :(得分:0)
试试这段代码:
using System;
using System.Drawing;
using System.Windows.Forms;
namespace Test
{
public partial class Form1 : Form
{
bool mouseHover;
int width;
int height;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
timer1.Interval = 25;
timer1.Tick += timer1_Tick;
width = pictureBox1.Width;
height = pictureBox1.Height;
timer1.Start();
}
void timer1_Tick(object sender, EventArgs e)
{
if (mouseHover)
{
pictureBox1.Width += (pictureBox1.Width < 100) ? 5 : 0;
pictureBox1.Height += (pictureBox1.Height < 100) ? 5 : 0;
}
else
{
pictureBox1.Width += (pictureBox1.Width > width) ? -5 : 0;
pictureBox1.Height += (pictureBox1.Height > height) ? -5 : 0;
}
}
private void pictureBox1_MouseEnter(object sender, EventArgs e)
{
mouseHover = true;
}
private void pictureBox1_MouseLeave(object sender, EventArgs e)
{
mouseHover = false;
}
}
}
您可以根据自己喜欢的方式调整间隔,但每25毫秒水平/垂直增加5个像素非常流畅。您需要设置初始高度和宽度,以便在鼠标离开图片框后返回到该大小。我使用null合并运算符,因此您不必停止计时器。只要?
左侧的条件为真,它就会评估:
左侧的值。当条件为假时,它将评估到:
的右侧。