using System; using System.Drawing; using System.Timers; using System.Windows.Forms; namespace App { class MainWindow : Window { private readonly ClockLabel ClockLabel = new(); private readonly Label ColorLabel = new(); private readonly FlowLayoutPanel Panel= new(); public MainWindow(Rectangle rect) : base(rect) { InitializeComponent(); } private void InitializeComponent() { // ClockLabel ClockLabel.Font = new Font("Microsoft Sans Serif", 100F, FontStyle.Regular, GraphicsUnit.Pixel, ((byte)(0))); ClockLabel.Size = new Size(450, 120); ClockLabel.TextAlign = ContentAlignment.MiddleCenter; Panel.Controls.Add(ClockLabel); // ColorLabel ColorLabel.Size = new Size(ClockLabel.Size.Width, 50); ColorLabel.Font = new Font("Microsoft Sans Serif", 18F, FontStyle.Regular, GraphicsUnit.Pixel, ((byte)(0))); ColorLabel.TextAlign = ContentAlignment.MiddleCenter; Panel.Controls.Add(ColorLabel); // Panel Panel.FlowDirection = FlowDirection.TopDown; Panel.AutoSizeMode = AutoSizeMode.GrowAndShrink; Panel.AutoSize = true; Controls.Add(Panel); // Events BackColorChanged += MainWindow_BackColorChanged; SizeChanged += MainWindow_SizeChanged; // Trigger an size changed event. OnSizeChanged(new EventArgs()); } private void MainWindow_SizeChanged(object? sender, EventArgs e) { // Center panel Panel.Left = (Bounds.Width - Panel.ClientRectangle.Width) / 2; Panel.Top = (Bounds.Height - Panel.ClientRectangle.Height) / 3; } private void MainWindow_BackColorChanged(object? sender, EventArgs e) { // Update Foreground color to contrast the background color. if (ColorUtil.GetLuminance(BackColor) < 0.5f) { ForeColor = Color.White; } else { ForeColor = Color.Black; } ColorLabel.Text = ColorUtil.ToHex(BackColor); } } }