用c#写一个点击按钮第一张图片渐隐一秒,第二张图片渐现一秒的代码
时间: 2024-02-06 22:12:26 浏览: 64
多张图片对比功能代码.rar_6485代码_twiced1i_图片对比代码_多张图片对比功能代码
您可以使用以下代码实现:
```csharp
private void button1_Click(object sender, EventArgs e)
{
// 首先将第一张图片渐隐
pictureBox1.Image = Image.FromFile("image1.jpg"); // 图片路径自行修改
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage; // 图片适应控件大小
pictureBox1.Visible = true;
for (double i = 1; i >= 0; i -= 0.05)
{
pictureBox1.Image = SetImageOpacity(Image.FromFile("image1.jpg"), i); // 调用 SetImageOpacity 方法设置图片透明度
pictureBox1.Refresh(); // 刷新控件
System.Threading.Thread.Sleep(50); // 暂停 50 毫秒
}
pictureBox1.Visible = false;
// 然后将第二张图片渐现
pictureBox2.Image = Image.FromFile("image2.jpg"); // 图片路径自行修改
pictureBox2.SizeMode = PictureBoxSizeMode.StretchImage; // 图片适应控件大小
pictureBox2.Visible = true;
for (double i = 0; i <= 1; i += 0.05)
{
pictureBox2.Image = SetImageOpacity(Image.FromFile("image2.jpg"), i); // 调用 SetImageOpacity 方法设置图片透明度
pictureBox2.Refresh(); // 刷新控件
System.Threading.Thread.Sleep(50); // 暂停 50 毫秒
}
}
// 设置图片透明度
private Image SetImageOpacity(Image image, double opacity)
{
Bitmap bmp = new Bitmap(image.Width, image.Height);
Graphics graphics = Graphics.FromImage(bmp);
ColorMatrix matrix = new ColorMatrix(new float[][] {
new float[] {1, 0, 0, 0, 0},
new float[] {0, 1, 0, 0, 0},
new float[] {0, 0, 1, 0, 0},
new float[] {0, 0, 0, (float)opacity, 0},
new float[] {0, 0, 0, 0, 1}
});
ImageAttributes attributes = new ImageAttributes();
attributes.SetColorMatrix(matrix);
graphics.DrawImage(image, new Rectangle(0, 0, image.Width, image.Height), 0, 0, image.Width, image.Height, GraphicsUnit.Pixel, attributes);
graphics.Dispose();
return bmp;
}
```
在代码中,我们首先定义了 `button1_Click` 方法,当点击按钮时会触发该方法。在方法中,我们先将第一张图片渐隐,再将第二张图片渐现。其中,我们使用了 `SetImageOpacity` 方法来设置图片透明度,使用了 `Thread.Sleep` 方法来暂停线程,以达到渐隐渐现的效果。
阅读全文