두 개의 타이머를 사용하여 양식의 레이블 페이딩을 에뮬레이션하려고합니다. 첫 번째 타이머에서 색상 값이 255에 도달하면 두 번째 타이머가 활성화되어 첫 번째 타이머가 수행 한 작업을 되돌리고 색상 값을 다시 0으로 가져옵니다. 디버깅 할 때 두 번의 1 반올림에서 예상대로 작동 한 다음 timer1> timer2> timer1 이후에는 timer2로 이동하지 않으므로 값이 계속 증가하기 때문에 값이 255를 초과했습니다. 무엇이 문제 일 수 있습니까?C#에서 타이머를 사용하여 레이블을 어떻게 페이드 인 및 페이드 아웃 할 수 있습니까?
timer1.Tick += new EventHandler(timer1_Tick);
timer2.Tick += new EventHandler(timer2_Tick);
그리고 여기에 나머지의 :
이
공개를 Form1()에 당신이 timer2_Tick의 방향을 변경할 때 여러 timer1.Tick 이벤트 처리기를 추가하기 때문에Timer timer1 = new Timer();
Timer timer2 = new Timer();
int r = 0;
int g = 0;
int b = 0;
int fade = 0;
private void timer1_Tick(object sender, EventArgs e)
{
fade++;
if (fade <= 500) //just a number above 255
{
r++;
g++;
b++;
lblReboot.ForeColor = Color.FromArgb(255, r, g, b);
if (r == 255)
{
fade = 0;
r = 255;
g = 255;
b = 255;
timer1.Stop();
timer1.Enabled = false;
timer2.Enabled = true;
timer2.Interval = 10;
timer2.Start();
}
}
}
private void timer2_Tick(object sender, EventArgs e)
{
fade++;
if (fade <= 500)
{
r--;
g--;
b--;
lblReboot.ForeColor = Color.FromArgb(255, r, g, b);
}
if (r == 0)
{
fade = 0;
r = 0;
g = 0;
b = 0;
timer2.Stop();
timer2.Enabled = false;
timer1.Tick += new EventHandler(timer1_Tick);
timer1.Enabled = true;
timer1.Interval = 10;
timer1.Start();
}
}
WPF를 사용합니까? – Roland