将组件添加到透明表单

时间:2011-10-18 18:31:26

标签: c# winforms transparency

我使用this code中的the code project来显示.png图片(具有透明度)。在第87行,我尝试添加一个标签,其中我成功但不知何故它不会出现在表单上。我尝试过刷新,无效,但没有一个有效。也许有人可以指出我正确的方向。

1 个答案:

答案 0 :(得分:1)

我认为,因为你正在使用UpdateLayeredWindow,所以禁用了“普通”绘制机制,即没有向窗口发送WM_PAINT消息,并且WinForms库没有机会呈现Label控件。

我发现this article关于在MSDN上使用分层窗口说明:

  

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

所以我担心WinForms无法与你的方法一起工作。即使它会,你可能会得到令人不快的结果,因为使用winforms不容易做到“真正的”透明度(即标签不会透明地显示,但会绘制父窗体背景颜色)