分享

C#实现在PictureBox中动态显示一张不断变化的图片...

 行走在理想边缘 2022-06-29 发布于四川

效果

在这里插入图片描述

方法

  1. 新建一个Form,插入pictureBox控件
  2. 新建一个定时器,设置每1秒钟刷新一次pictureBox的图片,但是需要注意读取图片时资源锁定导致图片无法被更改的情况,以下为具体实现:
//author:FarryNiu
//https://niuzifan.blog.csdn.net/article/details/109450489
//实例化Timer类,设置间隔时间为1秒;
System.Timers.Timer t = new System.Timers.Timer(1000);
//定时执行的事件为theout;
t.Elapsed += new System.Timers.ElapsedEventHandler(theout);
//设置为一直执行(true);
t.AutoReset = true;
//是否执行System.Timers.Timer.Elapsed事件;
t.Enabled = true;

//theout事件
public void theout(object source, System.Timers.ElapsedEventArgs e)
        {
            try
            {
                fileStream = new FileStream("图片路径", FileMode.Open, FileAccess.Read);
                pictureBox1.Image = Image.FromStream(fileStream);
                //释放图片资源
                fileStream.Close();
                fileStream.Dispose();
                //销毁多余对象
                GC.Collect();
            }
            catch(System.IO.IOException)
            {
            	//当读取时遇到共享冲突则关闭读取流
                fileStream.Dispose();
            }
        }

总结

如果要更新显示的图片为本地图片,就不可避免的存在读写冲突,在本程序中读取后马上释放图片资源,以保证大部分时间图片可以被改写,但是当定时器频率较高时会存在较多的冲突,因此若想高性能显示一张快速变化的图片,不适宜使用本地文件为媒介,最好在运行内存中实现改写后显示本方法适用于图片变化频率低的情况

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多