C# 桌面上的透明窗体
我想创建一个具有多个窗口的c应用程序,这些窗口都是透明的,上面有一些文本C# 桌面上的透明窗体,c#,winforms,window,desktop,C#,Winforms,Window,Desktop,我想创建一个具有多个窗口的c应用程序,这些窗口都是透明的,上面有一些文本 棘手的部分是使这些表单位于桌面的顶部,但位于桌面图标的下方。这是可能的吗?仅仅使窗口透明是非常简单的: this.BackColor = Color.Fuchsia; this.TransparencyKey = Color.Fuchsia; 您可以这样做,这样您仍然可以与桌面或窗口下的任何其他内容进行交互: public const int WM_NCHITTEST = 0x84; public const int H
棘手的部分是使这些表单位于桌面的顶部,但位于桌面图标的下方。这是可能的吗?仅仅使窗口透明是非常简单的:
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 );
}
}
仅使窗口透明非常简单:
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 );
}
}
谢谢你的提示,杰夫。这还不是我想要的。我希望窗口看起来像是桌面的一部分,这样图标就可以放在我的窗体上
也许有一种不同的方法。我可以直接在桌面上绘制文本和图形吗?谢谢你的提示。这还不是我想要的。我希望窗口看起来像是桌面的一部分,这样图标就可以放在我的窗体上
也许有一种不同的方法。我真的可以直接在桌面上绘制文本和图形吗?杰夫·希尔曼(Jeff Hillman)所述的方法可以有效地使窗口透明,这将使您能够将其显示为您提到的桌面的一部分 您可能会遇到一个问题,我最近也遇到过这个问题,即在窗口中设置了任何抗锯齿标志。具体地说,使用DrawText,任何使用抗锯齿标志集渲染的文本都会渲染为背景不透明。最终的结果是,您得到的文本周围有一个轻微的彩色边框。我相信这也适用于其他任何事情,尽管我还没有尝试过
关于如何解决这个问题,你有什么想法吗?杰夫·希尔曼(Jeff Hillman)所述的上述方法可以有效地使窗口透明化,这将使您能够将其显示为桌面的一部分,而您提到的正是您的目标 您可能会遇到一个问题,我最近也遇到过这个问题,即在窗口中设置了任何抗锯齿标志。具体地说,使用DrawText,任何使用抗锯齿标志集渲染的文本都会渲染为背景不透明。最终的结果是,您得到的文本周围有一个轻微的彩色边框。我相信这也适用于其他任何事情,尽管我还没有尝试过 有没有关于如何解决这个问题的想法