游戏技术基础:实验记录六
net: [[C#]]
1、GIF动画示例,利用几张彼此差异较小的图片制作GIF动画
步骤:
首先,需要将GIF动画分解为逐帧图像。可以使用许多工具来完成此操作,例如Adobe Photoshop,GIMP或在线GIF分解器。将所有帧保存为单独的图像文件(比如PNG或JPG格式),并记下每个图像的运行时间。
在Visual Studio中创建一个新的Windows窗体应用程序项目,并在设计器上创建一个PictureBox控件。将该控件的SizeMode属性设置为“Zoom”,以确保图像可以自动缩放以适合控件大小。
为了使图像序列成为动画,需要使用一个计时器。在图像序列上迭代,并在PictureBox控件上显示当前帧。此外,需要在控件的Paint事件中将背景颜色设置为透明以保留所有图像帧。以下是示例代码:
1 | private Image[] frames; // 存放所有的帧图像 |
将上述代码放置在窗体代码中,然后在Load事件中调用LoadFrames()函数以准备所有动画帧。调用StartAnimation()函数以启动动画,调用StopAnimation()函数以停止它。
希望这些步骤和代码片段能够帮助您实现在Windows窗体应用程序上显示利用几张彼此差异较小的图片制作的GIF动画。
注意事项:
- 在picturebox1的属性-事件窗口中,选中paint事件并将其与pictureBox1_Paint函数绑定。

- 图片与picturebox大小不一致可能导致黑边的出现,添加一行以下代码即可
1
pictureBox1.Size = new Size(frame1.Width, frame1.Height); // 将控件大小设置为第一帧图像大小
- 推荐在”项目名称\项目名称\bin\Debug”下建立文件夹放图片素材,因为该路径对应于{Application.StartupPath},即启动路径,下面是一个示例。
1
frames[i] = Image.FromFile($"{Application.StartupPath}/Resources/Images/frame_{i + 1}.png");



2、在窗体中显示一张图片,利用键盘控制图片上、下、左、右移动。利用双缓冲消除移动过程中出现的闪烁现象。
步骤:
- 在窗体设计器中,添加一个
PictureBox控件,用于显示图片。将PictureBox的SizeMode属性设置为StretchImage,以确保图像可以自适应大小并填充整个控件区域。
- 将要移动的图片加载到
PictureBox中。可以从本地文件系统或其他资源库加载图片,例如:

实现键盘控制图片的移动。可以使用窗体的
KeyDown事件来处理按键操作。例如,按下向右箭头键时,将图片的Left属性增加一个像素值,以向右移动图片。您可以创建一个MovePicture()方法来实现此逻辑。注意,为了避免闪烁现象,需要在每次移动之前,使用以下语句开启双缓冲:1
DoubleBuffered = true;
然后在
MovePicture()方法中处理按键事件,例如:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20private void MovePicture(Keys direction)
{
const int step = 5; // 控制每次移动的步长
switch (direction)
{
case Keys.Up:
pictureBox1.Top -= step;
break;
case Keys.Down:
pictureBox1.Top += step;
break;
case Keys.Left:
pictureBox1.Left -= step;
break;
case Keys.Right:
pictureBox1.Left += step;
break;
}
}订阅窗体的
KeyDown事件,并在事件处理程序中调用MovePicture()方法,以响应用户键盘输入。例如:1
2
3
4private void Form1_KeyDown(object sender, KeyEventArgs e)
{
MovePicture(e.KeyCode);
}最后,记得启用窗体的
KeyPreview属性,以确保窗体可以接收键盘输入:1
KeyPreview = true;
完成以上步骤后,就可以在 Windows 窗体中向上、下、左、右移动一张图片了。使用双缓冲,可以有效消除移动过程中出现的闪烁现象。
