首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将类中的图像设置为窗体中的picturebox

将类中的图像设置为窗体中的picturebox
EN

Stack Overflow用户
提问于 2013-05-24 01:15:00
回答 2查看 409关注 0票数 0

我有一个类,我从一个缓冲区中获取一个图像,图像被设置为一个变量类型的图像,它将保存该图像。

代码语言:javascript
运行
复制
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。

代码语言:javascript
运行
复制
MyClass Class = new MyClass();
while (Class.MyImage == null)
{
    System.Threading.Thread.Sleep(1);
    Application.DoEvents();
}

pictureBox1.Image = Class.MyImage;

但是,图像永远不会分配给picturebox,图像变量始终为空。

我已经通过在我的硬盘上用来自缓冲区的字节创建了一个图像文件来检查来自缓冲区的图像是否真的存在,并且成功地创建了图像,没有任何问题。

我做错了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-24 02:25:23

我认为你可能正在遭受图像内存被释放的问题,当它的实例化对象被释放时。您是否在try/catch中捕获错误?我认为当MemoryStream对象被释放时,它被用来创建的图像也会被释放。

票数 1
EN

Stack Overflow用户

发布于 2013-05-24 01:21:38

您在MyClass中创建的图像应该在一个方法中,然后您需要使用buffer作为参数调用该方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16720070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档