퇴근5분전


판넬에 슬라이드 애니메이션을 구현한 것임. 

참 간단하다.

브라우져에서 적용해보았고.
이에는 조금 특별한 레이아웃 기법이 필요하다.

양쪽 모두 처리 하기위해서...


// 타이머로 슬라이드 처리를 해주는 객체임.
    internal class SlidePanel : IDisposable
    {
        Timer tm = new Timer();
        int baseWidth = 0;
        Control ctrl = null;
        bool goRight = false;
        int add = 0;

        internal SlidePanel(Control _ctrl)
        {
            ctrl = _ctrl;
            this.tm.Interval = 1000 / 23;
            this.tm.Tick += new EventHandler(tm_Tick);
            baseWidth = ctrl.Width;
            goRight = true;
        }

        internal void Start()
        {
            SlideInit();
            tm.Start();
        }

        internal void ReflashWidth( int width)
        {
            if( width >= 100)
                baseWidth = width;
        }

        /// <summary>
        /// 컨트롤이 작아진건지 커진건지 확인.
        /// </summary>
        internal bool ViewEnabled
        {
            get { return ctrl.Width > 10 ? true : false; }
        }

        private void SlideInit()
        {
            add = baseWidth / 23 * 6;
            if (goRight)
            { add = -1 * (add); }
            else
            { add = +1 * (add); }
            if (this.tm.Enabled) this.tm.Stop();
            this.tm.Start();
        }


        private void Stop()
        {
            this.tm.Stop();
            goRight = !goRight;
        }

        void tm_Tick(object sender, EventArgs e)
        {
            ctrl.Width = ctrl.Width + (add);
            if (goRight)
            {
                if (ctrl.Width <= 0)
                    this.Stop();
            }
            else
            {
                if (ctrl.Width >= baseWidth)
                {
                    ctrl.Width = baseWidth;
                    this.Stop();
                }
            }
        }

        #region IDisposable 멤버

        void IDisposable.Dispose()
        {
            if (tm.Enabled) tm.Stop();
            this.tm.Dispose();
            this.tm = null;
        }

        #endregion
    }

'# 2) .Net ( Vs 2005 ) > WinForm' 카테고리의 다른 글

SMS TextLength 비교  (0) 2009.05.01
Excel Export  (0) 2009.05.01
데이타베이스 브라우져 ver3  (0) 2009.05.01
다각형 내부 클릭 체크.  (0) 2009.05.01
프로시져 생성기  (0) 2009.05.01