继续上面的文章,本篇主要说明如何让小人走动
0、准备:
从网络上找到2.5D的透明小人图片。我这里找的是李逍遥的图片,如下
1、添加类数据成员
Timer t200;//200ms定时器
int cnt = 0;//记录定时器第几次到,用于切换图片
Bitmap person16;//人物所有动作透明图
2、初始化定时器
(1)在public Form1()中
? ? ? ? Timer t200;//200ms定时器 ? ? ? ? int cnt = 0;//记录定时器第几次到,用于切换图片 ? ? ? ? Bitmap person16;//人物所有动作透明图
(2)在Form1_Shown加载人物动作图片和启动定时器
? ? ? ? ? ? person16 = new Bitmap("xiaoyao.png"); ? ? ? ? ? ? t200.Start();
3、在定时器中进行图片显示切换
private void T200_Tick(object sender, EventArgs e)
{
Bitmap person1 = new Bitmap(person16.Width/4, person16.Height/4);
Point point = new Point(0, 0);
cnt++;
if (cnt > 3) cnt = 0;
point.X = -1*cnt * person1.Width;//不同人物动作x坐标不同
using (Graphics g = Graphics.FromImage(person1))
{
g.DrawImage(myBitmap, mypoint);//取得人物后面的背景
g.DrawImage(person16, point);//完成人物切换和动作叠加
}
using (Graphics g0 = Graphics.FromImage(pictureBox1.Image))
{
g0.DrawImage(person1,0,0);//将人物和背景叠加图绘制到地图上
}
pictureBox1.Refresh();//重绘
}
bug:地图移动人物会闪
人依然被困在左上角,还不能让地图和小人在地图中的位置随用户操作而移动。
?
|