【发布时间】:2021-02-26 03:50:58
【问题描述】:
我正在尝试为问答游戏创建一个计时器栏,它会在 10 秒内缩小尺寸并从绿色变为红色。
这是我现有的代码:
double timerWidth = 600;
double dblRed = 0;
double dblGreen = 255;
int intRed = 0;
int intGreen = 255;
for (int t = 1000; t != -1; t--) // gives player 10 seconds to select the right answer
{
string strTime = intTime.ToString();
lblTime.Text = strTime;
intTime--;
int intTimerWidth = Convert.ToInt32(timerWidth);
imgTimer.Size = new Size(intTimerWidth, 30);
dblRed = dblRed + 0.23;
dblGreen = dblGreen - 0.23;
intRed = Convert.ToInt32(dblRed);
intGreen = Convert.ToInt32(dblGreen);
imgTimer.BackColor = Color.FromArgb(intRed, intGreen, 0);
wait(1); // wait 0.001 seconds
timerWidth = timerWidth - 0.6;
if (intTime == 0)
{
checkAnswer(); // when 10 seconds has ellapsed, ellapsed, checks answer
}
}
它在当前起作用,但使用 RGB 它会从绿色变为棕色再变为红色,这显然不是预期的效果。我希望可以通过 HSL 实现从绿色到黄色、橙色再到红色,但我不知道如何转换。
希望我已经问过了,我不常去这些论坛。
谢谢!
【问题讨论】:
-
看看this - 或者搜索HSL或HSV conversion函数。