2009-05-27 129 views
2

我有一个摄像头源显示在我的表单上,并希望在它的顶部绘制。我打算用一个图片框来做这件事,我发现PictureBox不支持真正的透明度,而只是它所在表单的颜色。它也不支持alphablending,这是我希望它显示的方式,类似于如何显示表单。C#Alpha混合透明图片框

有谁知道如何做到这一点?或者有一个可以实现这一点的控件?

回答

1

在大多数情况下,OwenP使用鲍勃鲍威尔方法在这里演示的方法http://www.bobpowell.net/transcontrols.htm的答案是行得通的。但是,因为它是网络摄像头的直接绘图界面,所以实时馈送似乎总是处于其他控件之上。

为了解决这个问题,我欺骗了一点点,并创建了一个打开视频输入的辅助表单,它没有边框,被设置为始终位于顶部并且具有透明度,我直接绘制了该表单。然后,我只需要在这个辅助表单中处理一些事件,以关注原始表单,并在另一个程序正在使用时处理。

0

您可以将PictureBox放在另一个单独的窗体上,并使用Windows Style类别中的窗体Opacity值。这会起作用吗?

+0

不,它不会是图片框的透明度很简单,它只是得到控制的背面颜色,不幸的是 – PeteT 2009-06-04 07:47:17

5

Windows窗体中的透明度有点破损。正如你发现的那样,它并不真正支持重叠控制。它只是通过透明部分显示窗体的背景颜色。借助一些Windows API魔术,您可以将许多控件显示为真正透明,并支持重叠,如this article by Bob Powell demonstrates。我已经能够使他的技术适用于标签和自定义控件,但我认为我已经试图使其适用于PictureBox,结果令人失望。一种解决方法可以尝试创建一个手动绘制图像的自定义控件;我没有尝试。 Here's a forum post我在那里演示了一个支持真正透明度的自定义控件(我在那个论坛上的句柄是AtmaWeapon)。我的记忆似乎表明,这对于自定义控件来说效果最好,这是因为它们呈现时发生在Microsoft控件上的一些明显的魔法。

或者,您可以使用WPF而不是WinForms来实现您的应用程序。 WPF的透明度适用并支持重叠控制。这是您开发应用程序的一个非常大的转变,但它从一开始就起作用。

+1

+1我刚刚发现你的论坛帖子非常有价值。 – snicker 2009-10-22 20:47:33