using System; using System.Drawing; using System.Windows.Forms; namespace TimerApp { public class RestForm : Form { private Label lblMessage = null!; private Label lblTimer = null!; private Button btnSkip = null!; public event EventHandler? SkipRequested; public RestForm() { InitializeComponent(); } private void InitializeComponent() { this.lblMessage = new System.Windows.Forms.Label(); this.lblTimer = new System.Windows.Forms.Label(); // this.btnSkip = new RoundedButton(); // Removed custom button this.SuspendLayout(); // ... (keep form settings) // // Form 设置 // this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; this.WindowState = FormWindowState.Maximized; this.TopMost = true; this.BackColor = System.Drawing.Color.Black; this.Opacity = 0.90; // 90% 不透明度 this.ShowInTaskbar = false; this.Name = "RestForm"; this.Text = "Rest Now"; this.SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint | ControlStyles.DoubleBuffer | ControlStyles.ResizeRedraw, true); // // lblMessage // this.lblMessage.AutoSize = false; this.lblMessage.Font = new System.Drawing.Font("Microsoft YaHei UI", 36F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); this.lblMessage.ForeColor = System.Drawing.Color.White; this.lblMessage.Location = new System.Drawing.Point(100, 100); this.lblMessage.Name = "lblMessage"; // 初始大小,会在CenterControls中动态调整 this.lblMessage.Size = new System.Drawing.Size(800, 100); this.lblMessage.TabIndex = 0; this.lblMessage.Text = "休息一下,看看远方"; this.lblMessage.TextAlign = ContentAlignment.MiddleCenter; // // lblTimer // this.lblTimer.AutoSize = false; this.lblTimer.Font = new System.Drawing.Font("Segoe UI Light", 72F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); this.lblTimer.ForeColor = System.Drawing.Color.LightGreen; this.lblTimer.Location = new System.Drawing.Point(100, 200); this.lblTimer.Name = "lblTimer"; // 初始大小,会在CenterControls中动态调整 this.lblTimer.Size = new System.Drawing.Size(400, 180); this.lblTimer.TabIndex = 1; this.lblTimer.Text = "--:--"; this.lblTimer.TextAlign = ContentAlignment.MiddleCenter; // // btnSkip // this.btnSkip = new System.Windows.Forms.Button(); this.btnSkip.BackColor = System.Drawing.Color.FromArgb(63, 63, 70); this.btnSkip.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.btnSkip.FlatAppearance.BorderSize = 0; this.btnSkip.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(80, 80, 90); this.btnSkip.Font = new System.Drawing.Font("Microsoft YaHei UI", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); this.btnSkip.ForeColor = System.Drawing.Color.White; this.btnSkip.Location = new System.Drawing.Point(100, 400); this.btnSkip.Name = "btnSkip"; this.btnSkip.Size = new System.Drawing.Size(120, 46); this.btnSkip.TabIndex = 2; this.btnSkip.Text = "跳过"; this.btnSkip.UseVisualStyleBackColor = false; this.btnSkip.Cursor = System.Windows.Forms.Cursors.Hand; this.btnSkip.Click += new System.EventHandler(this.btnSkip_Click); // Add controls this.Controls.Add(this.btnSkip); this.Controls.Add(this.lblMessage); this.Controls.Add(this.lblTimer); this.btnSkip.BringToFront(); this.Load += new System.EventHandler(this.RestForm_Load); this.Resize += new System.EventHandler(this.RestForm_Resize); this.ResumeLayout(false); this.PerformLayout(); } private void RestForm_Load(object? sender, EventArgs e) { CenterControls(); } private void RestForm_Resize(object? sender, EventArgs e) { CenterControls(); } private void CenterControls() { // 简单的居中计算 int centerX = this.Width / 2; int centerY = this.Height / 2; // Equal spacing logic int spacing = 80; // 使用足够大的固定大小,确保文本完整显示 // 使用屏幕宽度的85%作为最大宽度,确保在不同分辨率下都能完整显示 int maxWidth = (int)(this.Width * 0.85); // 消息文本:使用足够大的尺寸 lblMessage.Size = new Size(maxWidth, 120); // 时间文本:使用足够大的尺寸(72pt字体需要较大空间) lblTimer.Size = new Size(maxWidth, 200); // Timer Center = centerY lblTimer.Location = new Point(centerX - lblTimer.Width / 2, centerY - lblTimer.Height / 2); // Message above Timer lblMessage.Location = new Point(centerX - lblMessage.Width / 2, lblTimer.Top - spacing - lblMessage.Height); // Button below Timer btnSkip.Location = new Point(centerX - btnSkip.Width / 2, lblTimer.Bottom + spacing); } public void UpdateTime(TimeSpan remaining) { if (lblTimer.InvokeRequired) { lblTimer.BeginInvoke(new Action(UpdateTime), remaining); } else { // 只更新文本,不重新居中,避免闪烁 // 由于lblTimer已设置固定大小,文本居中显示,不会因为文本变化而改变位置 lblTimer.Text = $"{remaining.Minutes:D2}:{remaining.Seconds:D2}"; } } private void btnSkip_Click(object? sender, EventArgs e) { SkipRequested?.Invoke(this, EventArgs.Empty); this.Close(); } } }