zoukankan      html  css  js  c++  java
  • 改进版照片自动展示程序的 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的用法还是不了解,未能在这点上进行改进。

          源码下载改进版代码

           

        

  • 相关阅读:
    Backbone的 listenTo 和 on
    前端工作流程
    Zepto源码笔记(三)
    Zepto源码笔记(二)
    Zepto源码笔记(一)
    Canvas基础学习(一)——实现简单时钟显示
    常用排序算法之JavaScript实现
    NodeJS学习笔记(一)——搭建开发框架Express,实现Web网站登录验证
    浏览器基础知识
    学习Vim 全图解释
  • 原文地址:https://www.cnblogs.com/jianggest/p/powerpictureShowe.html
Copyright © 2011-2022 走看看