2

我的表单上显示了一个网络摄像头提要,并想在其上绘图。我打算使用图片框来做到这一点,我发现 PictureBox 不支持真正的透明度,而只是它所在表单的颜色。它也不支持字母混合,这是我希望它显示的方式,类似于表单的显示方式。

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

4

3 回答 3

5

Windows 窗体中的透明度有点破损。正如您所发现的,它并不真正支持重叠控件。它只是通过透明部分显示表单的背景颜色。正如Bob Powell的这篇文章所展示的,通过一些 Windows API 魔法,您可以使许多控件显示为真正透明并支持重叠。我已经能够使他的技术适用于标签和自定义控件,但我想我已经尝试使它适用于PictureBox令人失望的结果。一种解决方法是尝试创建一个手动绘制图像的自定义控件;我没试过。 这是一个论坛帖子我在其中演示了一个支持真正透明度的自定义控件(我在那个论坛上的句柄是 AtmaWeapon。)我的记忆似乎表明这对自定义控件最有效,因为 Microsoft 的控件在呈现时会发生一些明显的魔力。

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

于 2009-05-28T17:31:34.830 回答
1

在大多数情况下,OwenP 使用 Bob Powell 在 transcontrols 中演示的方法执行此操作的答案起作用。但是,因为它是网络摄像头的直接绘图界面,所以实时源似乎总是在其他控件之上。

为了解决这个问题,我做了一点小技巧,并创建了一个在视频源上打开的辅助表单——它没有边框,设置为始终在顶部,并且具有透明度——我直接在这个表单上绘图。然后,我只需要在这个辅助表单中处理一些事件,以将注意力集中在原始表单上,并在另一个程序正在使用时进行处理。

于 2009-06-04T07:54:09.080 回答
0

您可以将 PictureBox 放在另一个单独的表单上,并使用 Windows 样式类别中的表单不透明度值。那行得通吗?

于 2009-05-28T17:24:13.177 回答