如何将透明面板显示为位图?

时间:2010-08-31 07:31:01

标签: c# winforms windows-xp blur

问题:

如何抓取透明面板显示在位图中的内容?

背景

我需要创建一个位于所有内容之上的表单并使屏幕的一部分模糊,但不会阻止用户与之交互。奇怪......我知道。

我创建了一个表单并添加了一个面板。然后我将面板的设置背景颜色设置为红色。然后将表单的TransparentKey属性设置为红色,topmost = True。

所以现在我有一个透明的面板。凉。我可以与它下面的应用程序进行交互。凉。现在我只需添加模糊。我想看看panel1上显示的内容并将其模糊然后显示在panel1顶部的panel2上。或者至少这是个主意。

重要细节:

DrawToBitmap()只显示红色背景。

这是在XP上运行。

1 个答案:

答案 0 :(得分:2)

是的,DrawToBitmap()。但不是在透明面板上,在透明面板下面。如果那个“面板”实际上不是你的那么你必须使用Graphics.CopyFromScreen()。

不确定您打算如何处理它,但在透明面板中绘制模糊图像会使其不透明,您无法再与底层窗口交互。此外,不要使用红色,如果底层窗口包含任何红色,您将获得意外的透明度。 Color.Fuchsia是一个不错的选择,它是一种有趣的颜色。