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

用for循环画图,想把每次画的图并在一起,问题是现在我的程序运行结果只有最后一张图
我在一个picturebox上面要画张图,具体几张用for循环实现的,但是每循环一次上一次的bitmap就被覆盖掉了,不知道怎么才能把几个bitmap放在一起,求指教,大致代码如下
Graphics   g;
Bitmap rusult;
 for (int i = 0; i < 5; i++)//循环画五张图
   { 
      DrawGraph.drawXR drawXR = new DrawGraph.drawXR();//画图的类,返回一个bitmap
      result= drawXR.drawBitmap(pic);//画图的类,返回一个bitmap
      g = CreateGraphics();
      g.DrawImage(result, x,y);//此处每次循环的x值和y值是不一样的 

   }
 pic.BackgroundImage = result;  //pic为一个pictureBox,此处把result作为pic的背景


问题: 就是循环的结果是只显示最后一张bitmap了,不能把每次循环得到的bitmap并在一起

------解决方案--------------------
Graphics g;
Bitmap rusult = (Bitmap)pic.BackgroundImage;

for(int i = 0;i<5;i++)
{
   DrawGraph.drawXR drawXR = new DrawGraph.drawXR();//画图的类,返回一个bitmap
       result= drawXR.drawBitmap(pic);//画图的类,返回一个bitmap
   g=Graphics.FromImage(rusult);
g.DrawImage(rusult,x,y);
g.Dispose();
}
pic.BackgroundImage = rusult;
这样就行了,你之前的只是一张一张图象显示而已,当然不会合并了。
------解决方案--------------------

Bitmap bmp = new Bitmap(pic.Width,pic.Height);
Graphics g = Graphics.FromImage(bmp);
DrawGraph.drawXR drawXR = new DrawGraph.drawXR();//画图的类,返回一个bitmap
for(int i=0;i<5;i++)
{
   Image img = drawXR.drawBitmap(pic); //断点调试下,看看图片对不对
   g.DrawImage(img,x,y);
}
g= null;
pic.Bg = bmp;