2011-02-11 38 views
1

我正在用C#编写一个表单,并有几个面板。我需要在两个面板之间画一条线。我在网上发现了几种方法可以解决这个问题,最有希望的方法似乎是创建第三个面板,使其透明,将其放在我原来的面板上并在此处画线。如何在另外两个面板上创建一个透明的System.Windows.Forms.Panel,然后在透明面板上绘制一条线?

即使将BackColor和ForeColor属性设置为透明(在代码或VS的设计视图中),我也无法让面板变为透明。

关于如何使面板本身透明(或不可见)的任何想法,但我已画出的线仍然可见在所有其他的顶部?

在此先感谢。

回答

2

不,它是透明的。通过给表单的BackgroundImage一个值来看到这一点。你会通过透明面板看到它。当然,这不是你想要的那种透明度,你想要堆叠效果起作用。没有直接的支持。

如果你想要图层工作,那么不要使用控件。使用Paint事件绘制。现在没有问题,如果你想透明,那么就不要画。简单地通过首先绘制图像在图像上画一条线。这也是WPF的渲染模型。

+0

有没有办法绘制从一个面板到另一个面板的线条?除了绘制两条在各自面板边缘相交的独立线条之外。 – Boumbles 2011-02-11 21:00:59

0

实际上,您可以像您自己的UserControl一样轻松地完成此操作。下面是一个代码示例:

Drawing on top of controls inside a panel (C# WinForms)

这类似于您最初试图做的,而不是只画线的透明面板的顶部,该代码创建一个不规则形状的用户控件(其恰好在一条线的不规则形状中)。