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; } } }