我的表单上显示了一个网络摄像头供稿,并希望在其顶部进行绘制。我本打算使用图片框来执行此操作,但我发现PictureBox不支持真正的透明度,而仅支持其所在窗体的颜色。它还不支持alphablending,这是我希望其显示的方式,类似于可以使表格显示的方式。

有谁知道如何做到这一点?还是实现了可以做到这一点的控件?

最佳答案

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

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

10-07 18:50
查看更多