2013-01-04 98 views
0

在我的項目中,我使用用戶之間的套接字進行通信,並且我必須將一個picturebox發送給另一個。將PictureBox發送到套接字上

這是我如何利用PictureBox:

PictureBox pictureBox1 = new PictureBox(); 
     ScreenCapture sc = new ScreenCapture(); 
     // capture entire screen, and save it to a file 
     Image img = sc.CaptureScreen(); 
     // display image in a Picture control named pictureBox1 
     pictureBox1.Image = img; 

我用我的套接字來發送這樣的:

byte[] buffer = Encoding.ASCII.GetBytes(textBox1.Text); 
      s.Send(buffer); 

,但我無法弄清楚如何我可以給你pictureBox1.Hope可以提前幫助,謝謝。

回答

1

可以在PictureBox圖像使用存儲器流轉換爲一個字節數組:

MemoryStream ms = new MemoryStream(); 
pictureBox1.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Png); 
s.Send(ms.ToArray()); 
+0

謝謝,但我怎麼能顯示這張照片給接收器?當接收器通過它s.rec eive()?因爲我想讓接收者看到發件人的屏幕截圖 – user1902018

+0

@ user1902018你試過了什麼?您可以將字節讀入內存流,然後將其設置爲一個picturebox,基本上顛倒了發送它的過程。 –

+0

其實我不知道該怎麼做。你能舉個例子嗎? – user1902018

0
`public byte[] PictureBoxImageToBytes(PictureBox picBox) 
{ 
    if ((picBox != null) && (picBox.Image != null)) 
    { 
     Bitmap bmp = new Bitmap(picBox.Image); 
     System.IO.MemoryStream ms = new System.IO.MemoryStream(); 

     bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp); 

      byte[] buff = ms.ToArray(); 

     ms.Close(); 
     ms.Dispose(); 
     return buff; 
    } 
    else 
    { 
     return null; 
    } 
}` 

http://www.codyx.org/snippet_transformer-image-picturebox-tableau-bytes_496.aspx

+0

謝謝,但我怎麼能顯示這個圖片到接收器?由於接收器獲取s.receive()?因爲我想接收器看到發件人的屏幕截圖 – user1902018

0

通過ToArray()發送和接收然後轉換爲image

public static Image ByteArrayToImage(byte[] byteArrayIn) 
    { 
     var ms = new MemoryStream(byteArrayIn); 
     var returnImage = Image.FromStream(ms); 
     return returnImage; 
    }