如何在另外两个已存在的面板上创建透明的System.Windows.Forms.Panel,然后在透明面板上绘制一条线?

时间:2011-02-11 20:44:19

标签: c# .net forms drawing panel

我正在用C#编写一个表单并有几个面板。我需要在两个面板之间划一条线。我在网上找到了几种方法,最有希望的似乎是创建第三个面板,使其透明,将其放在我原来的面板上并在这里画线。

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

关于如何使面板本身透明(或不可见)但是我在其上绘制的线仍然可以在其他所有内容上看到的任何想法?

提前致谢。

2 个答案:

答案 0 :(得分:2)

不,它是透明的。通过为表单的BackgroundImage提供一个值来查看此内容。你会透过透明面板看到它。当然,这不是你想要的那种透明度,你想要堆叠效果。没有直接的支持。

如果您希望图层工作,请不要使用控件。使用Paint事件进行绘制。现在没有问题,如果你想要透明度,那就不要画画。只需先绘制图像,在图像上画一条线。这也是WPF的渲染模型。

答案 1 :(得分:0)

实际上,您可以像使用自己的UserControl一样轻松地执行此操作。这是一个代码示例:

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

这与您最初尝试的操作类似,只是在透明面板上绘制一条线,而不是在透明面板上绘制一条线,此代码创建一个不规则形状的用户控件(恰好是一条线的不规则形状)