2015-11-12 3 views
0

`C# растровое изображение в PictureBox

public Bitmap catchFullScreen() 
    { Bitmap r = new Bitmap(SystemInformation.VirtualScreen.Width ,SystemInformation.VirtualScreen.Height); 
     Rectangle bounds = new Rectangle (0,0,SystemInformation.VirtualScreen.Width ,SystemInformation.VirtualScreen.Height); 
     using (Bitmap bitmap = new Bitmap(SystemInformation.VirtualScreen.Width ,SystemInformation.VirtualScreen.Height)) 
     { 
      using (Graphics g = Graphics.FromImage(bitmap)) 
      { 
       g.CopyFromScreen(Point.Empty, Point.Empty, bounds.Size); 
       r = bitmap; 
       pictureBox1.Image = r; 
       pictureBox1.Update(); 
       pictureBox1.Refresh(); 
      } 
      pictureBox2.Image = r; // breakpoint 1 
      pictureBox2.Update(); // breakpoint 2 
      pictureBox2.Refresh(); 
     } 
     pictureBox3.Image = r; 
     pictureBox3.Update(); 
     pictureBox3.Refresh(); 
     return r; 
    } 

` Вот мой скриншот захвата, но что-то странное происходит, picturebox1 и 2 может захватывать, но picturebox3 не делает. дальше, контрольная точка1 работает, но точка останова2 не прибывает,

Почему я не могу использовать это растровое изображение после того, как я за пределами подпрограмм? более важно, что он не вернет r? предложения пожалуйста!

+1

Вы используете битмап с помощью инструкции. Поскольку вы хотите продолжать использовать его за пределами этой процедуры, вы не должны избавляться от него. – LarsTech

ответ

3

Bitmap - это класс, который является ссылочным типом. Когда вы разместите bitmap, вы также разместите свой r. Если вы хотите продолжить использовать r, убрав bitmap, подумайте о том, чтобы использовать что-то вроде Bitmap.Clone.

+0

работы после добавления броска, СПАСИБО! – doggy