improve:启动动画
This commit is contained in:
@@ -99,6 +99,9 @@ namespace Ink_Canvas.Windows
|
|||||||
{
|
{
|
||||||
Dispatcher.Invoke(() =>
|
Dispatcher.Invoke(() =>
|
||||||
{
|
{
|
||||||
|
// 设置进度条颜色
|
||||||
|
SetProgressBarColor();
|
||||||
|
|
||||||
// 获取进度条容器的实际宽度
|
// 获取进度条容器的实际宽度
|
||||||
double containerWidth = ProgressBarBackground.ActualWidth;
|
double containerWidth = ProgressBarBackground.ActualWidth;
|
||||||
if (containerWidth <= 0)
|
if (containerWidth <= 0)
|
||||||
@@ -410,5 +413,118 @@ namespace Ink_Canvas.Windows
|
|||||||
return "ICC Horse.png";
|
return "ICC Horse.png";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 根据实际样式设置进度条颜色
|
||||||
|
/// </summary>
|
||||||
|
private void SetProgressBarColor()
|
||||||
|
{
|
||||||
|
Color progressColor;
|
||||||
|
|
||||||
|
switch (_actualSplashStyle)
|
||||||
|
{
|
||||||
|
case 2: // 春季 - H=136, S=15, L=22
|
||||||
|
progressColor = HslToRgb(136, 15, 22);
|
||||||
|
break;
|
||||||
|
case 3: // 夏季 - H=6, S=15, L=22
|
||||||
|
progressColor = HslToRgb(6, 15, 22);
|
||||||
|
break;
|
||||||
|
case 4: // 秋季 - H=39, S=15, L=22
|
||||||
|
progressColor = HslToRgb(39, 15, 22);
|
||||||
|
break;
|
||||||
|
case 5: // 冬季 - H=204, S=15, L=22
|
||||||
|
progressColor = HslToRgb(204, 15, 22);
|
||||||
|
break;
|
||||||
|
case 6: // 马年限定 - 白色
|
||||||
|
progressColor = Colors.White;
|
||||||
|
break;
|
||||||
|
default: // 默认使用
|
||||||
|
progressColor = Colors.White;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 创建渐变画刷
|
||||||
|
var gradientBrush = new LinearGradientBrush
|
||||||
|
{
|
||||||
|
StartPoint = new System.Windows.Point(0, 0),
|
||||||
|
EndPoint = new System.Windows.Point(1, 0)
|
||||||
|
};
|
||||||
|
|
||||||
|
// 根据颜色类型设置渐变
|
||||||
|
if (_actualSplashStyle == 6) // 马年限定使用白色渐变
|
||||||
|
{
|
||||||
|
gradientBrush.GradientStops.Add(new GradientStop(Colors.White, 0));
|
||||||
|
gradientBrush.GradientStops.Add(new GradientStop(Color.FromArgb(200, 255, 255, 255), 0.5));
|
||||||
|
gradientBrush.GradientStops.Add(new GradientStop(Color.FromArgb(150, 255, 255, 255), 1));
|
||||||
|
}
|
||||||
|
else // 其他样式使用HSL颜色的渐变
|
||||||
|
{
|
||||||
|
var lighterColor = Color.FromArgb(255,
|
||||||
|
(byte)Math.Min(255, progressColor.R + 30),
|
||||||
|
(byte)Math.Min(255, progressColor.G + 30),
|
||||||
|
(byte)Math.Min(255, progressColor.B + 30));
|
||||||
|
var darkerColor = Color.FromArgb(255,
|
||||||
|
(byte)Math.Max(0, progressColor.R - 30),
|
||||||
|
(byte)Math.Max(0, progressColor.G - 30),
|
||||||
|
(byte)Math.Max(0, progressColor.B - 30));
|
||||||
|
|
||||||
|
gradientBrush.GradientStops.Add(new GradientStop(lighterColor, 0));
|
||||||
|
gradientBrush.GradientStops.Add(new GradientStop(progressColor, 0.5));
|
||||||
|
gradientBrush.GradientStops.Add(new GradientStop(darkerColor, 1));
|
||||||
|
}
|
||||||
|
|
||||||
|
ProgressBarFill.Background = gradientBrush;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 将HSL颜色转换为RGB颜色
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="h">色相 (0-360)</param>
|
||||||
|
/// <param name="s">饱和度 (0-100)</param>
|
||||||
|
/// <param name="l">亮度 (0-100)</param>
|
||||||
|
/// <returns>RGB颜色</returns>
|
||||||
|
private Color HslToRgb(double h, double s, double l)
|
||||||
|
{
|
||||||
|
// 将HSL值转换为0-1范围
|
||||||
|
h = h / 360.0;
|
||||||
|
s = s / 100.0;
|
||||||
|
l = l / 100.0;
|
||||||
|
|
||||||
|
double r, g, b;
|
||||||
|
|
||||||
|
if (s == 0)
|
||||||
|
{
|
||||||
|
// 无饱和度,为灰度
|
||||||
|
r = g = b = l;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
double q = l < 0.5 ? l * (1 + s) : l + s - l * s;
|
||||||
|
double p = 2 * l - q;
|
||||||
|
|
||||||
|
r = HueToRgb(p, q, h + 1.0 / 3.0);
|
||||||
|
g = HueToRgb(p, q, h);
|
||||||
|
b = HueToRgb(p, q, h - 1.0 / 3.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Color.FromRgb(
|
||||||
|
(byte)Math.Round(r * 255),
|
||||||
|
(byte)Math.Round(g * 255),
|
||||||
|
(byte)Math.Round(b * 255)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// HSL颜色转换辅助方法
|
||||||
|
/// </summary>
|
||||||
|
private double HueToRgb(double p, double q, double t)
|
||||||
|
{
|
||||||
|
if (t < 0) t += 1;
|
||||||
|
if (t > 1) t -= 1;
|
||||||
|
if (t < 1.0 / 6.0) return p + (q - p) * 6 * t;
|
||||||
|
if (t < 1.0 / 2.0) return q;
|
||||||
|
if (t < 2.0 / 3.0) return p + (q - p) * (2.0 / 3.0 - t) * 6;
|
||||||
|
return p;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user