簡體   English   中英

如何在C#中直接在屏幕上繪圖? (示例導致PInvokeStackImbalance)

[英]How to draw directly on the screen in C#? (Example causes PInvokeStackImbalance)

我想在C#中直接在桌面上畫畫(如壁紙或者我不介意),但是我還是找不到。 我找到了這個:

using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Runtime.InteropServices;

class Program {
    [DllImport("User32.dll")]
    static extern IntPtr GetDC(IntPtr hwnd);

    [DllImport("User32.dll")]
    static extern void ReleaseDC(IntPtr dc);

    static void Main(string[] args) {
        IntPtr desktop = GetDC(IntPtr.Zero);
        using (Graphics g = Graphics.FromHdc(desktop)) {
            g.FillRectangle(Brushes.Red, 0, 0, 100, 100);
        }
        ReleaseDC(desktop);
    }
}

它實際上繪制了一個紅色矩形但在1秒內,Visual Studio給了我這個錯誤:

檢測到PInvokeStackImbalance

任何幫助表示贊賞,謝謝

你不能用C#直接繪制到桌面。 基本上你將不得不得到用作壁紙的位圖,在上面繪制,然后將其保存到磁盤並將其設置為活動壁紙。

看看這個SO問題的指針

您可以創建一個沒有任何鑲邊的頂級窗口,然后將其推送到當前頂級窗口集的z順序的后面。 然后,您將像任何其他C#窗口一樣繪制到該窗口的客戶區域。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM