mirror of
https://github.com/zs-yg/kortapp-z.git
synced 2025-12-06 16:10:42 +08:00
修复bug和扩展功能
This commit is contained in:
28
AppCard.cs
28
AppCard.cs
@@ -54,9 +54,23 @@ namespace AppStore
|
||||
this.Padding = new Padding(10);
|
||||
|
||||
// 异步初始化卡片路径和边框
|
||||
// 预加载边框路径
|
||||
Task.Run(() => {
|
||||
InitializeCardPath();
|
||||
InitializeBorder();
|
||||
|
||||
// 确保在主线程注册事件
|
||||
this.Invoke((MethodInvoker)(() => {
|
||||
this.Paint += (sender, e) => {
|
||||
if (BorderCache.IsEmpty)
|
||||
{
|
||||
Task.Run(() => {
|
||||
InitializeBorder();
|
||||
this.Invoke((MethodInvoker)(() => this.Invalidate()));
|
||||
});
|
||||
}
|
||||
};
|
||||
}));
|
||||
});
|
||||
|
||||
// 应用图标 - 添加null检查
|
||||
@@ -187,8 +201,12 @@ namespace AppStore
|
||||
// 使用卡片尺寸作为缓存键
|
||||
string cacheKey = $"{Width}_{Height}_10";
|
||||
|
||||
// 检查缓存中是否已有路径
|
||||
// 双重检查锁模式确保线程安全
|
||||
if (!BorderCache.TryGetValue(cacheKey, out var borderPath))
|
||||
{
|
||||
lock (BorderCache)
|
||||
{
|
||||
if (!BorderCache.TryGetValue(cacheKey, out borderPath))
|
||||
{
|
||||
// 创建临时文件存储路径数据
|
||||
string tempFile = Path.GetTempFileName();
|
||||
@@ -237,12 +255,20 @@ namespace AppStore
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 边框和阴影效果
|
||||
protected override void OnPaint(PaintEventArgs e)
|
||||
{
|
||||
base.OnPaint(e);
|
||||
|
||||
// 确保边框已初始化
|
||||
if (BorderCache.IsEmpty)
|
||||
{
|
||||
InitializeBorder();
|
||||
}
|
||||
|
||||
// 绘制背景
|
||||
using (var brush = new SolidBrush(this.BackColor)) {
|
||||
e.Graphics.FillRectangle(brush, this.ClientRectangle);
|
||||
|
||||
@@ -76,6 +76,10 @@ namespace AppStore
|
||||
private static readonly Color DarkText = Color.FromArgb(240, 240, 240);
|
||||
private static readonly Color DarkButtonHover = Color.FromArgb(60, 60, 60);
|
||||
private static readonly Color DarkButtonActive = Color.FromArgb(70, 70, 70);
|
||||
private static readonly Color DarkBorder = Color.FromArgb(80, 80, 80);
|
||||
|
||||
// 浅色主题边框颜色
|
||||
private static readonly Color LightBorder = Color.FromArgb(180, 180, 180);
|
||||
|
||||
public static event Action<ThemeMode> ThemeChanged = delegate {};
|
||||
|
||||
@@ -108,6 +112,9 @@ namespace AppStore
|
||||
public static Color ButtonActiveColor =>
|
||||
_currentTheme == ThemeMode.Light ? LightButtonActive : DarkButtonActive;
|
||||
|
||||
public static Color BorderColor =>
|
||||
_currentTheme == ThemeMode.Light ? LightBorder : DarkBorder;
|
||||
|
||||
public static void ApplyTheme(Control control)
|
||||
{
|
||||
ApplyThemeToControl(control);
|
||||
|
||||
20
logger.cs
20
logger.cs
@@ -75,5 +75,25 @@ namespace AppStore
|
||||
}
|
||||
Log(warningMessage);
|
||||
}
|
||||
|
||||
public static void LogDebug(string message, Exception? ex = null)
|
||||
{
|
||||
string debugMessage = $"DEBUG: {message}";
|
||||
if (ex != null)
|
||||
{
|
||||
debugMessage += $"\nException: {ex}\nStackTrace: {ex.StackTrace}";
|
||||
}
|
||||
Log(debugMessage);
|
||||
}
|
||||
|
||||
public static void LogTip(string message, Exception? ex = null)
|
||||
{
|
||||
string tipMessage = $"TIP: {message}";
|
||||
if (ex != null)
|
||||
{
|
||||
tipMessage += $"\nException: {ex}\nStackTrace: {ex.StackTrace}";
|
||||
}
|
||||
Log(tipMessage);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user