using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Windows.Forms;
namespace FontPreview
{
///
/// 集中 UI 主题:颜色常量、字体、控件样式工厂。
/// 所有界面颜色/样式统一从这里取,避免散落硬编码和重复写法。
///
internal static class UiTheme
{
// ---- 颜色 ----
public static readonly Color Primary = Color.FromArgb(43, 58, 85); // 主深蓝
public static readonly Color Accent = Color.FromArgb(98, 137, 200); // 强调蓝(竖条/hover 边)
public static readonly Color AccentText = Color.FromArgb(70, 110, 180); // 字体名标签蓝
public static readonly Color CardBg = Color.White;
public static readonly Color PreviewBg = Color.FromArgb(245, 246, 248); // 预览图浅灰底
public static readonly Color PanelBg = Color.White;
public static readonly Color Border = Color.FromArgb(226, 230, 235);
public static readonly Color SubText = Color.Gray;
// ---- 字体 ----
public const string UiFontFamily = "Microsoft YaHei UI";
public static readonly Font GroupLabel = new Font(UiFontFamily, 9.5f, FontStyle.Bold);
public static readonly Font CardTitle = new Font(UiFontFamily, 11.5f, FontStyle.Bold);
public static readonly Font StatusText = new Font(UiFontFamily, 8f);
public static readonly Font UiBase = new Font(UiFontFamily, 9f);
// ---- 圆角卡片 ----
public const int CardRadius = 10;
/// 创建一张统一风格的圆角卡片面板。
public static RoundPanel CreateCard(int width, int height)
{
RoundPanel p = new RoundPanel
{
Width = width,
Height = height,
BackColor = CardBg,
Radius = CardRadius,
BorderColor = Border,
HoverBorder = Accent
};
return p;
}
/// 卡片左侧的强调色竖条。
public static Panel CreateAccentBar(int x, int y)
{
return new Panel { BackColor = Accent, Location = new Point(x, y), Size = new Size(4, 18) };
}
/// 卡片标题字体名标签。
public static Label CreateCardTitle(string text, int x, int y, int width)
{
return new Label
{
Text = text,
Location = new Point(x, y),
Size = new Size(width, 26),
Font = CardTitle,
ForeColor = AccentText,
AutoEllipsis = true,
Cursor = Cursors.Hand,
BackColor = Color.Transparent
};
}
/// 卡片里的预览图 PictureBox(浅灰底、贴左)。
public static PictureBox CreatePreviewBox(int x, int y, int width, int height)
{
return new PictureBox
{
Location = new Point(x, y),
Size = new Size(width, height),
BackColor = PreviewBg,
SizeMode = PictureBoxSizeMode.Normal,
Cursor = Cursors.Hand
};
}
// ---- 按钮 ----
/// 主按钮:深蓝填充白字。
public static Button CreatePrimaryButton(string text, int x, int y, int w, int h, EventHandler onClick)
{
Button b = new Button
{
Text = text,
Location = new Point(x, y),
Size = new Size(w, h),
BackColor = Primary,
ForeColor = Color.White,
FlatStyle = FlatStyle.Flat,
Cursor = Cursors.Hand
};
b.FlatAppearance.BorderSize = 0;
if (onClick != null) b.Click += onClick;
return b;
}
/// 次要按钮:扁平白底。
public static Button CreateSecondaryButton(string text, int x, int y, int w, int h, EventHandler onClick)
{
Button b = new Button
{
Text = text,
Location = new Point(x, y),
Size = new Size(w, h),
FlatStyle = FlatStyle.Flat,
Cursor = Cursors.Hand
};
if (onClick != null) b.Click += onClick;
return b;
}
/// 左侧分组小标题。
public static Label CreateGroupLabel(string text, int x, int y, int w)
{
return new Label
{
Text = text,
Location = new Point(x, y),
Size = new Size(w, 20),
Font = GroupLabel,
ForeColor = Primary,
BackColor = Color.Transparent
};
}
/// 主窗体应用主题:白底、统一字体。
public static void ApplyForm(Form f)
{
f.BackColor = PanelBg;
f.Font = UiBase;
}
}
}