【问题标题】:Draw / Paint Outside Form绘制/绘制外部表格
【发布时间】:2010-07-31 18:21:34
【问题描述】:

我们可以在表单之外绘制图像和绘制文本吗……我的意思是在外面……

我知道要问它愚蠢的问题,但我们可以...

【问题讨论】:

    标签: c# winforms draw paint


    【解决方案1】:

    您可以通过创建表单并将其 TransparentColor 属性设置为其背景颜色来“作弊”,然后在其上绘图。但是,这会禁止您绘制透明颜色,因为它不会显示。

    或者您实际上可以直接在桌面上绘图。

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

    IntPtr desktopPtr = GetDC(IntPtr.Zero);
    Graphics g = Graphics.FromHdc(desktopPtr);
    
    // Do graphics manipulation here with "g" object
    
    // Very important - free desktop graphics.
    g.Dispose();
    ReleaseDC(desktopPtr);
    

    【讨论】:

    • 直接画到桌面窗口的问题是不粘。下次桌面被告知重新绘制时,您的绘图将消失。虽然您可以在重绘时挂接桌面的消息泵并重绘,但这是严重的矫枉过正。使用拥有主窗口的全屏透明窗口是最便宜的方式。
    【解决方案2】:

    你不能利用不存在的东西。根据该定义,表单的外部区域不存在于表单的上下文中。

    我同意 Henk 的观点,不过,您可以使用透明表格。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-12
      • 2021-01-17
      • 2020-04-12
      相关资源
      最近更新 更多