如果动态的往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]]);