簡體   English   中英

將圖像從類設置為表單中的圖片框

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM