「塗鴉是人生一大樂趣」。在窗口畫膩了?直接在桌面畫!
[DllImport("User32.dll")] public static extern IntPtr GetDesktopWindow();
取得桌面句柄,用 Graphics.FromHwnd(hwndDesktop) 繪圖。
public partial class Form1 : Form {
private readonly Random _rand = new();
private readonly IntPtr _hwndDesktop = GetDesktopWindow();
public Form1() {
InitializeComponent();
FormClosing += (_, _) => timer1.Stop();
}
private void btnStart_Click(object sender, EventArgs e) {
WindowState = FormWindowState.Minimized;
if (!timer1.Enabled) timer1.Start();
}
private void timer1_Tick(object sender, EventArgs e) {
using (var g = Graphics.FromHwnd(_hwndDesktop)) {
int w = Screen.PrimaryScreen.Bounds.Width;
int h = Screen.PrimaryScreen.Bounds.Height;
string text = "致青春!!";
using (var font = new Font("華文行楷", 170f)) {
var c1 = Color.FromArgb(_rand.Next(256), _rand.Next(256), _rand.Next(256));
var c2 = Color.FromArgb(_rand.Next(256), _rand.Next(256), _rand.Next(256));
var size = g.MeasureString(text, font);
using (var brush = new LinearGradientBrush(
new RectangleF(new PointF(w / 2f, 0), size), c1, c2, LinearGradientMode.Vertical)) {
var sf = new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center };
g.DrawString(text, font, brush, new RectangleF(0, 0, w, h), sf);
}
}
}
}
[DllImport("User32.dll")] public static extern IntPtr GetDesktopWindow();
}

定時器觸發重繪,顏色隨機漸變,字體華文行楷 170pt,居中顯示「致青春!!」,最小化主視窗後全屏塗鴉。