【问题标题】:Transparent form on the desktop桌面上的透明表格
【发布时间】:2008-09-22 09:01:42
【问题描述】:

我想创建一个带有多个窗口的 c# 应用程序,这些窗口都是透明的,上面有一些文字。

棘手的部分是让这些表单位于桌面顶部,但位于桌面图标下方。这可能吗?

【问题讨论】:

    标签: c# winforms window desktop


    【解决方案1】:

    只是让窗口透明是非常简单的:

    this.BackColor = Color.Fuchsia;
    this.TransparencyKey = Color.Fuchsia;
    

    您可以执行以下操作,以便您仍然可以与桌面或窗口下的任何其他内容进行交互:

    public const int WM_NCHITTEST = 0x84;
    public const int HTTRANSPARENT = -1;
    
    protected override void WndProc(ref Message message)
    {
        if ( message.Msg == (int)WM_NCHITTEST )
        {
            message.Result = (IntPtr)HTTRANSPARENT;
        }
        else
        {
            base.WndProc( ref message );
        }
    }
    

    【讨论】:

      【解决方案2】:

      感谢杰夫的提示。它仍然不是我所追求的。我实际上希望窗口看起来像是桌面的一部分,以便图标可以位于我的表单顶部。

      也许有不同的方法可以做到这一点。我真的可以直接在桌面上绘制文本和图形吗?

      【讨论】:

        【解决方案3】:

        上述 Jeff Hillman 描述的方法在使窗口透明方面很有效,这应该使您能够让它看起来像是桌面的一部分(您提到这是您的目标。

        您可能遇到的一个问题(我最近也遇到过)是在设置了任何抗锯齿标志的情况下绘制到窗口。具体来说,使用 DrawText,任何设置了抗锯齿标志的文本都会被渲染,就好像背景不透明一样。最终结果是你得到的文本周围有一个轻微的色差边框。我确信这也适用于其他任何事情,尽管我没有尝试过。

        有什么解决方法的想法吗?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2010-12-01
          • 1970-01-01
          • 1970-01-01
          • 2011-05-21
          • 1970-01-01
          • 2016-11-23
          • 1970-01-01
          相关资源
          最近更新 更多