판넬 슬라이드 애니메이션
판넬에 슬라이드 애니메이션을 구현한 것임.
참 간단하다.
브라우져에서 적용해보았고.
이에는 조금 특별한 레이아웃 기법이 필요하다.
양쪽 모두 처리 하기위해서...
// 타이머로 슬라이드 처리를 해주는 객체임.
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 |