C# 将组件添加到透明窗体

C# 将组件添加到透明窗体,c#,winforms,transparency,C#,Winforms,Transparency,我使用from来显示.png图像(具有透明度)。在第87行,我尝试添加一个成功的标签,但不知怎的,它不会出现在表单上。我尝试了刷新、失效,但都没有成功。也许有人能给我指出正确的方向。我想,由于您使用的是UpdateLayeredWindow“正常”绘制机制被禁用,即没有WM_绘制消息发送到窗口,WinForms库没有机会呈现标签控件 我在MSDN上找到了关于使用分层窗口的说明: 请注意,当使用UpdateLayeredWindow时,应用程序不需要响应WM_PAINT或其他绘制消息,因为它已经为

我使用from来显示.png图像(具有透明度)。在第87行,我尝试添加一个成功的标签,但不知怎的,它不会出现在表单上。我尝试了刷新、失效,但都没有成功。也许有人能给我指出正确的方向。

我想,由于您使用的是
UpdateLayeredWindow
“正常”绘制机制被禁用,即没有WM_绘制消息发送到窗口,WinForms库没有机会呈现
标签
控件

我在MSDN上找到了关于使用分层窗口的说明:

请注意,当使用
UpdateLayeredWindow
时,应用程序不需要响应
WM_PAINT
或其他绘制消息,因为它已经为窗口提供了可视表示,系统将负责存储该图像、合成该图像并在屏幕上呈现该图像
UpdateLayeredWindow
功能非常强大,但它通常需要修改现有Win32应用程序的绘图方式


因此,我担心WinForms无法与您的方法配合使用。即使这样,您也可能会得到令人不快的结果,因为winforms不容易实现“真正”的透明度(即,标签不会透明显示,但会以父窗体背景色绘制)

避免使用Form.TransparencyKey属性是一种非常痛苦的方法。据我所知,Form.TransparencyKey不支持部分透明,例如阴影。