C#中GID于Bitmap之间的小问题,实在是弄不懂,求帮忙。
public Bitmap Image;
private Bitmap[] bmps;
private Bitmap tempbgbmp;
private Graphics gh;
public Background()
{
bmps = GameImages.GetImageByType(GameImages.ImageType.Background);
GetRandomBg();
tempbgbmp = new Bitmap(Image.Width, Image.Height);
2.新建一个画布,大小等于Image大小
gh = Graphics.FromImage(tempbgbmp);
3.gh来自于画布
}
public void GetRandomBg()
{
Random rad = new Random();
this.Image = bmps[rad.Next(0, 2)];
1.这里随机获取了一张图片,赋值给Image
}
public void MoveBackGround(int MoveX )
{
4.调用此方法时在画布上绘图
5.这里汇出了Image 2次 ,原因是想根据参数MoveX来改变绘图位置,使得图片向左移动。
gh.DrawImage(this.Image, -MoveX, 0);
gh.DrawImage(this.Image, -MoveX + this.Image.Width, 0);
6.最后保存图片到Image(在下次绘图的时候就继续上次移动的位置)
this.Image = tempbgbmp;
}
但是我遇到一个问题,不知道什么原因图片移动一次后,就保持不变了,无论调用几次MoveBackGround。
后来发现如果把tempbgbmp = new Bitmap(Image.Width, Image.Height);
画布实例化的这条语句放到方法中图片便可以移动,但是这有个问题,内存不断暴涨!
能帮忙看下什么问题吗?过几小时会回来看一次。
------解决方案--------------------private int movedX ;
movedX+=MoveX;
gh.DrawImage(this.Image, -MoveX-movedX, 0);
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/