C# 如何使用pictureboxes创建淡入淡出按钮效果
我正在尝试创建一种效果,这样当用户将鼠标悬停在picturebox上时,按钮会淡入C# 如何使用pictureboxes创建淡入淡出按钮效果,c#,winforms,animation,graphics,visual-studio-2013,C#,Winforms,Animation,Graphics,Visual Studio 2013,我正在尝试创建一种效果,这样当用户将鼠标悬停在picturebox上时,按钮会淡入hoverimage,当他们离开时,按钮会淡入原始状态。我在程序中使用图片框作为按钮。我这样做是因为所有的按钮都是没有按钮纹理的图片,所以我没有看到使用按钮的意义。为了让你能看到它,这里是原始图像: 以及要淡入的图像: 我仍然可以稍微更改这些图像,但这是总体思路 我将如何创建这种褪色效果?我正在用定时器和不透明度设置来描绘一些东西,但我不知道这些东西能帮我解决这个问题 E:这是我的一些代码。当我悬停时,它会随着
hoverimage
,当他们离开时,按钮会淡入原始状态。我在程序中使用图片框作为按钮。我这样做是因为所有的按钮都是没有按钮纹理的图片,所以我没有看到使用按钮的意义。为了让你能看到它,这里是原始图像:
以及要淡入的图像:
我仍然可以稍微更改这些图像,但这是总体思路
我将如何创建这种褪色效果?我正在用定时器和不透明度设置来描绘一些东西,但我不知道这些东西能帮我解决这个问题
E:这是我的一些代码。当我悬停时,它会随着图像的变化而变化,但不会褪色,而且看起来很起伏
private void pictureBox3_MouseEnter(object sender, EventArgs e)
{
pictureBox3.Image = pictureBox37.Image;
}
private void pictureBox3_MouseLeave(object sender, EventArgs e)
{
pictureBox3.Image = pictureBox38.Image;
}
pictureBox37和pictureBox38
是不可见的带有我所需图像的参考PictureBox。我认为WinForms不支持此类动画,因此您必须手动执行此操作。如果这些按钮不止一个,我建议您使用此功能创建自己的UserControl。我可以给你一些建议如何做到这一点:
- 用户控件将有两个图像属性,一个用于普通图像,另一个用于悬停图像
- 您必须重写OnPaint方法来进行自定义绘制,根据
属性将这两个图像混合到图形中。这是一个浮点数,其中0表示显示正常图像,1表示悬停图像。中间的任何值都表示这两个图像的混合。我发现了一些很好的混合代码位置
- 然后,您需要一个计时器来动态更新此位置并重新绘制按钮(通过调用Invalidate)。我建议使用Windows.Forms.Timer,它的优点是它的Tick事件总是在主线程上执行,因此您不必使用Invoke来修改控件
- 最后但并非最不重要的一点是重写onMouseCenter和OnMouseLeave方法,以将这一切都设置为运动。这些方法可以设置一个
属性,该属性指示positionChange
的变化方向position