改进版照片自动展示程序的 c#

改进版---照片自动展示程序的 c#

摘要: Timer 代换了sleep(),这样的好处是可以在显示时实时拖动窗体。

 

看到了网友bravf对我的照片显示代码的评论,他建议我不要用进程的sleep来控制时间,因为那样会使程序在sleep 不能拖动窗体。对此我以前没有考虑,只是找到了一个sleep就拿来用了。

今天听从了他的意见,进行了测试。测试时将时间延长,将sleep(500)改成了sleep5000)果然如他所说,在程序在sleep 的时候,是不能拖动的。

不过他也给了个解决方案用定时器。

按图索骥,我找到了Timer 组件。

说到Timer组件,在MSDN帮助上有两个:

System.Windows.Forms..::.Timer

提供有关 Timer 类(用于 Windows 窗体计时器)及其成员的参考信息。

System.Timers..::.Timer

提供有关 System.Timers..::.Timer 类(用于基于服务器的计时器)的参考信息。

       因为是做windows窗体,选用System.Windows.Forms..::.Timer ,对于这个类MSDN上的备注是:

Timer 用于以用户定义的事件间隔触发事件。Windows 计时器是为单线程环境设计的,其中,UI 线程用于执行处理。它要求用户代码有一个可用的 UI 消息泵,而且总是在同一个线程中操作,或者将调用封送到另一个线程。

使用此计时器时,请使用 Tick 事件执行轮询操作,或在指定的时间内显示启动画面。每当 Enabled 属性设置为 true Interval 属性大于 0 时,将引发 Tick 事件,引发的时间间隔基于 Interval 属性设置。

此类提供用于设置时间间隔以及启动和停止计时器的方法。

       

注意注意:

Windows 窗体 Timer 组件是单线程组件,精度限定为 55 毫秒。如果您需要更高精度的多线程计时器,请使用 System.Timers 命名空间中的 Timer 类。

 

       后面还有一个关于使用的例子,照着例子我将自己的代码改了。

       首先定义了一个操作

private  void TimerEventProcessor(Object myObject,EventArgs myEventArgs)

        {          

 pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;

            pictureBox1.ClientSize = new Size(200, 200);

            string str;

            str = Str;

                pictureBox1.Load(str);

                judgeshow = false;

        }

这个操作是为了后面的时间驱动用的。

       再就是在原来的循环体内改成了

judgeshow = true;

                    Str = str[i];

                    myTimer.Tick += new EventHandler(TimerEventProcessor);

                    myTimer.Interval = 5000;

                    myTimer.Start();

                    //this.load += new loadPic(this.loadpicture);

                    // 循环播放的精髓

                    while (judgeshow == true)

                    {

                        Application.DoEvents();

                    }

               其中有些还是不是很了解,关于 tick事件,他用的是EventHandler委托,这个委托定义是:public delegate void EventHandler(

        Object sender,

        EventArgs e

) 

       不过很不幸的是,对于imagelist的用法还是不了解,未能在这点上进行改进。

      源码下载改进版代码

       

    

原文地址:https://www.cnblogs.com/jianggest/p/powerpictureShowe.html