日期:2014-05-16  浏览次数:20912 次

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/