首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

C# 在桌面塗鴉:用 Graphics.FromHwnd 繪製透明文字特效

     編輯:關於C#

靈感

「塗鴉是人生一大樂趣」。在窗口畫膩了?直接在桌面畫!

關鍵 API

[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,居中顯示「致青春!!」,最小化主視窗後全屏塗鴉。

注意

  • 僅限桌面繪製,不支援透明/點擊穿透(需分層視窗 WS_EX_LAYERED)
  • 其他視窗遮蓋/重繪會覆蓋塗鴉,定時器持續刷新可緩解
  • 娛樂/演示用途,生產環境請用正規覆蓋層技術
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved