添加艺术字

This commit is contained in:
zsyg
2025-07-02 11:09:21 +08:00
committed by GitHub
parent 125bf6b0d4
commit e34a954777
15 changed files with 753 additions and 663 deletions

View File

@@ -1,113 +1,119 @@
using System;
using System.Drawing;
using System.Windows.Forms;
namespace AppStore
{
public class ToolCard : UserControl
{
private PictureBox iconBox = new PictureBox();
private Label nameLabel = new Label();
private Panel namePanel = new Panel();
private Color borderColor = SystemColors.ControlDark;
public string ToolName { get; set; } = string.Empty;
public Image ToolIcon { get; set; } = SystemIcons.Shield.ToBitmap();
// 自定义点击事件初始化为空委托
public event EventHandler ToolCardClicked = delegate {};
public ToolCard()
{
// 启用双缓冲
this.SetStyle(ControlStyles.OptimizedDoubleBuffer |
ControlStyles.ResizeRedraw, true);
InitializeComponent();
}
private void InitializeComponent()
{
this.Size = new Size(240, 220);
this.BackColor = Color.White;
this.Padding = new Padding(5);
this.BorderStyle = BorderStyle.FixedSingle;
// 工具图标
iconBox = new PictureBox();
iconBox.Size = new Size(80, 80);
iconBox.Location = new Point((Width - 80) / 2, 15);
iconBox.SizeMode = PictureBoxSizeMode.StretchImage;
this.Controls.Add(iconBox);
// 工具名称 - 使用Panel包裹Label实现边框颜色
namePanel = new Panel();
namePanel.Size = new Size(Width - 20, 30);
namePanel.Location = new Point(10, 100);
namePanel.Paint += (sender, e) => {
ControlPaint.DrawBorder(e.Graphics, namePanel.ClientRectangle,
borderColor, ButtonBorderStyle.Solid);
};
nameLabel = new Label();
nameLabel.Dock = DockStyle.Fill;
nameLabel.Font = new Font("Microsoft YaHei", 10, FontStyle.Bold);
nameLabel.TextAlign = ContentAlignment.MiddleCenter;
namePanel.Controls.Add(nameLabel);
// 初始主题设置
UpdateLabelTheme();
// 订阅主题变化事件
ThemeManager.ThemeChanged += (theme) => UpdateLabelTheme();
this.Controls.Add(namePanel);
// 打开按钮
var openButton = new Button();
openButton.Text = "打开工具";
openButton.Size = new Size(100, 30);
openButton.Location = new Point((Width - 100) / 2, 140);
openButton.BackColor = Color.FromArgb(0, 120, 215);
openButton.ForeColor = Color.White;
openButton.FlatStyle = FlatStyle.Flat;
openButton.FlatAppearance.BorderSize = 0;
openButton.Cursor = Cursors.Hand;
// 按钮点击直接触发ToolCardClicked事件
openButton.Click += (s, e) => {
ToolCardClicked?.Invoke(this, e);
};
this.Controls.Add(openButton);
// 设置按钮悬停效果
openButton.BackColor = Color.FromArgb(0, 120, 215);
openButton.FlatAppearance.MouseOverBackColor = Color.FromArgb(0, 100, 180);
openButton.FlatAppearance.MouseDownBackColor = Color.FromArgb(0, 80, 160);
}
private void UpdateLabelTheme()
{
if (ThemeManager.CurrentTheme == ThemeManager.ThemeMode.Dark)
{
nameLabel.BackColor = Color.Black;
nameLabel.ForeColor = Color.White;
namePanel.BackColor = Color.Black;
borderColor = Color.White;
}
else
{
nameLabel.BackColor = Color.White;
nameLabel.ForeColor = Color.Black;
namePanel.BackColor = Color.White;
borderColor = SystemColors.ControlDark;
}
namePanel.Invalidate(); // 触发重绘
}
public void UpdateDisplay()
{
nameLabel.Text = ToolName;
iconBox.Image = ToolIcon;
UpdateLabelTheme();
}
}
}
// _ _
//| | _____ _ __| |_ __ _ _ __ _ __ ____
//| |/ / _ \| '__| __/ _` | '_ \| '_ \ ____|_ /
//| | (_) | | | || (_| | |_) | |_) |_____/ /
//|_|\_\___/|_| \__\__,_| .__/| .__/ /___|
// |_| |_|
using System;
using System.Drawing;
using System.Windows.Forms;
namespace AppStore
{
public class ToolCard : UserControl
{
private PictureBox iconBox = new PictureBox();
private Label nameLabel = new Label();
private Panel namePanel = new Panel();
private Color borderColor = SystemColors.ControlDark;
public string ToolName { get; set; } = string.Empty;
public Image ToolIcon { get; set; } = SystemIcons.Shield.ToBitmap();
// 自定义点击事件初始化为空委托
public event EventHandler ToolCardClicked = delegate {};
public ToolCard()
{
// 启用双缓冲
this.SetStyle(ControlStyles.OptimizedDoubleBuffer |
ControlStyles.ResizeRedraw, true);
InitializeComponent();
}
private void InitializeComponent()
{
this.Size = new Size(240, 220);
this.BackColor = Color.White;
this.Padding = new Padding(5);
this.BorderStyle = BorderStyle.FixedSingle;
// 工具图标
iconBox = new PictureBox();
iconBox.Size = new Size(80, 80);
iconBox.Location = new Point((Width - 80) / 2, 15);
iconBox.SizeMode = PictureBoxSizeMode.StretchImage;
this.Controls.Add(iconBox);
// 工具名称 - 使用Panel包裹Label实现边框颜色
namePanel = new Panel();
namePanel.Size = new Size(Width - 20, 30);
namePanel.Location = new Point(10, 100);
namePanel.Paint += (sender, e) => {
ControlPaint.DrawBorder(e.Graphics, namePanel.ClientRectangle,
borderColor, ButtonBorderStyle.Solid);
};
nameLabel = new Label();
nameLabel.Dock = DockStyle.Fill;
nameLabel.Font = new Font("Microsoft YaHei", 10, FontStyle.Bold);
nameLabel.TextAlign = ContentAlignment.MiddleCenter;
namePanel.Controls.Add(nameLabel);
// 初始主题设置
UpdateLabelTheme();
// 订阅主题变化事件
ThemeManager.ThemeChanged += (theme) => UpdateLabelTheme();
this.Controls.Add(namePanel);
// 打开按钮
var openButton = new Button();
openButton.Text = "打开工具";
openButton.Size = new Size(100, 30);
openButton.Location = new Point((Width - 100) / 2, 140);
openButton.BackColor = Color.FromArgb(0, 120, 215);
openButton.ForeColor = Color.White;
openButton.FlatStyle = FlatStyle.Flat;
openButton.FlatAppearance.BorderSize = 0;
openButton.Cursor = Cursors.Hand;
// 按钮点击直接触发ToolCardClicked事件
openButton.Click += (s, e) => {
ToolCardClicked?.Invoke(this, e);
};
this.Controls.Add(openButton);
// 设置按钮悬停效果
openButton.BackColor = Color.FromArgb(0, 120, 215);
openButton.FlatAppearance.MouseOverBackColor = Color.FromArgb(0, 100, 180);
openButton.FlatAppearance.MouseDownBackColor = Color.FromArgb(0, 80, 160);
}
private void UpdateLabelTheme()
{
if (ThemeManager.CurrentTheme == ThemeManager.ThemeMode.Dark)
{
nameLabel.BackColor = Color.Black;
nameLabel.ForeColor = Color.White;
namePanel.BackColor = Color.Black;
borderColor = Color.White;
}
else
{
nameLabel.BackColor = Color.White;
nameLabel.ForeColor = Color.Black;
namePanel.BackColor = Color.White;
borderColor = SystemColors.ControlDark;
}
namePanel.Invalidate(); // 触发重绘
}
public void UpdateDisplay()
{
nameLabel.Text = ToolName;
iconBox.Image = ToolIcon;
UpdateLabelTheme();
}
}
}