日期:2014-05-17  浏览次数:21035 次

如果动态的往PictureBox里面添加图片
最近研究怎么做塔防游戏,刚开始就卡壳了。
选一个图片(塔),加到PictureBox(背景地图)里。
我想的是在MouseDown的时候获取当前坐标,MouseUP的时候就往上画。但是画不上去。

      void huahua()
        {
            Image tankeimage = Image.FromFile("E:\\lhc\\课程设计\\c#\\塔防游戏\\图片\\向日葵.jpg");
            Rectangle destRect = new Rectangle(poi.X * 32, poi.Y * 32, 32, 32);
            //Rectangle destRect = new Rectangle(100, 100, 450, 150);
            Rectangle srcRect = new Rectangle(32, 0, 32, 32);
            Graphics g = pictureBox1.CreateGraphics();
            g.DrawImage(tankeimage, destRect, srcRect, GraphicsUnit.Pixel);

        }

在MouseUP的时候调用这个方法,但是画不出来。另外不太清楚destRect,srcRect的作用和在g.DrawImage做参数的作用。

------解决方案--------------------
1.MouseUp事件结束前加上
  Refresh();
2.添加pictureBox2_Paint事件,在事件里调用
   huahua();
3.huahua()方法
Graphics g = pictureBox1.CreateGraphics();
改成
Graphics g = Graphics.FromImage(pictureBox1.Image);


------解决方案--------------------
上面你说代码中destRect,srcRect不知道什么作用,代码是你写的吗?
根据

new Rectangle(poi.X * 32, poi.Y * 32

这个来看估计还有一个二维数组,是存储地图数据的
比如

int[,] map = new int[10,10];
//选择向日葵后放到地图上
MouseDown:
   map[mouseX/32,mouseY/32]=向日葵编号;
   //更新下地图 引发 Picture.Paint

Picture.Paint:
   for(int y....高)
      for(int x....宽)
          Draw(地图资源[map[x,y]]);