C# .NET Framework 的颜色转换?
Color transition for C# .NET Framework?
所以我正在尝试制作一个带有标题按钮的应用程序:“关闭、最小化、maximize/restore”,但我似乎无法弄清楚如何转换 R、G、B 值颜色顺利地变成另一个。
我已经非常擅长使用 C# 中的计时器,但我不知道如何计算转换时的值。
到目前为止我的代码:(关闭、最小化、e.t.c 东西是 pre-made 个矩形)
protected override void OnMouseMove(MouseEventArgs e)
{
base.OnMouseMove(e);
var pos = e.Location;
if (close.Contains(pos))
{
Timer t = new Timer { Interval = 1 };
t.Tick += delegate (object sender_, EventArgs e_)
{
// transition here
};
t.Start();
}
if (!close.Contains(pos))
{
Timer t = new Timer { Interval = 1 };
t.Tick += delegate (object sender_, EventArgs e_)
{
// "reverse" code here
};
t.Start();
}
}
注意:我不是要完整的代码片段,只是一些数学解决方案,这样我就可以轻松地做到这一点。
单击按钮时,计算您希望完成转换的时间。例如,您可以将当前时间加上 1 秒。存储这个值。
当计时器滴答声触发时,执行以下步骤:
- 计算颜色的当前值与其最终值之间的距离
- 计算过渡应该完成之前的剩余时间
- 1 除以 2。
- 根据 3 的结果微调颜色值。
对每个刻度重复此操作,即使某些刻度失败或最终重叠,您也应该始终按时正确选择最终颜色。
所以我正在尝试制作一个带有标题按钮的应用程序:“关闭、最小化、maximize/restore”,但我似乎无法弄清楚如何转换 R、G、B 值颜色顺利地变成另一个。
我已经非常擅长使用 C# 中的计时器,但我不知道如何计算转换时的值。
到目前为止我的代码:(关闭、最小化、e.t.c 东西是 pre-made 个矩形)
protected override void OnMouseMove(MouseEventArgs e)
{
base.OnMouseMove(e);
var pos = e.Location;
if (close.Contains(pos))
{
Timer t = new Timer { Interval = 1 };
t.Tick += delegate (object sender_, EventArgs e_)
{
// transition here
};
t.Start();
}
if (!close.Contains(pos))
{
Timer t = new Timer { Interval = 1 };
t.Tick += delegate (object sender_, EventArgs e_)
{
// "reverse" code here
};
t.Start();
}
}
注意:我不是要完整的代码片段,只是一些数学解决方案,这样我就可以轻松地做到这一点。
单击按钮时,计算您希望完成转换的时间。例如,您可以将当前时间加上 1 秒。存储这个值。
当计时器滴答声触发时,执行以下步骤:
- 计算颜色的当前值与其最终值之间的距离
- 计算过渡应该完成之前的剩余时间
- 1 除以 2。
- 根据 3 的结果微调颜色值。
对每个刻度重复此操作,即使某些刻度失败或最终重叠,您也应该始终按时正确选择最终颜色。