[英]Set an image from a class to a picturebox in a form
我有一個從緩沖區中獲取圖像的類,該圖像被設置為可容納該圖像的可變類型圖像。
class MyClass
{
public Image MyImage;
private void ReadingCallBack(IAsyncResult ar)
{
Socket CurrentSocket = null;
try
{
CurrentSocket = (Socket)ar.AsyncState;
int recvsize = CurrentSocket.EndReceive(ar);
Array.Resize(ref buffer, recvsize);
string stream = ASCIIEncoding.ASCII.GetString(buffer);
switch (stream.Substring(stream.IndexOf('[') + 1, stream.IndexOf(']') - 1))
{
case "Screenshot":
byte[] imgbuff = new byte[buffer.Length - 12];
Buffer.BlockCopy(buffer, 12, imgbuff, 0, imgbuff.Length);
MemoryStream ms = new MemoryStream(imgbuff);
MyImage = Image.FromStream(ms);
ms.Close();
break;
}
buffer = new byte[1024 * 5000];
CurrentSocket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(ReadingCallBack), CurrentSocket);
}
catch (Exception er)
{
//etc
}
}
}
在WindowsForm中,構造函數中包含以下代碼:每當用戶需要時,都會調用WindowsForm。
MyClass Class = new MyClass();
while (Class.MyImage == null)
{
System.Threading.Thread.Sleep(1);
Application.DoEvents();
}
pictureBox1.Image = Class.MyImage;
但是,圖像永遠不會分配給圖片框,圖像變量始終為null。
通過使用緩沖區中的字節在硬盤上創建映像文件,我檢查了緩沖區中的圖像是否確實存在,並且該映像已成功創建,沒有任何問題。
我做錯了什么?
我認為您可能會遇到在實例化對象被釋放時釋放圖像內存的問題。 您是否在嘗試/捕獲中捕獲錯誤? 我認為當處理該MemoryStream對象時,它用來創建的圖像也會被處理。
您在MyClass中創建的圖像應該在一個方法中,然后您需要使用buffer作為參數來調用該方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.