PictureBox上的C#Label(透明背景)(在面板上)

时间:2013-10-07 13:28:22

标签: c# panel picturebox

我想在PictureBoxes上绘制标签,但应该是透明背景。 这是我的代码:`

                           Labels[i].Location = new Point(0, 0);
                            Labels[i].Size = new Size(13, 13);
                            Labels[i].BackColor = Color.Transparent;
                            Labels[i].ForeColor = Color.Blue;


  Invoke(new MethodInvoker(delegate { Panels.Controls.Add(Pictures[i]); }));
                                    Invoke(new MethodInvoker(delegate { Panels.Controls.Add(Labels[i]); }));

我正在绘制我的图片,标签也是......但我得到了图片下的标签(当我将图片拖出他的位置时,我可以看到每个标签) 所以我想知道,我怎么能把它们放在Front with Transparent BackGround。谢谢 `

4 个答案:

答案 0 :(得分:0)

我认为您应该使用 z-index

之类的内容

答案 1 :(得分:0)

尝试在您的代理中调用Panels.Controls[Labels[i].Name].BringToFront();。这应该将每个标签放在图片的前面,因为它们已经被添加到面板中。

答案 2 :(得分:0)

我想你已经用Google搜索过了,但这里是good link about winforms transparency

我曾经写过许多winforms应用程序,它们使用了带有透明标签的非常丑陋的皮肤。我记得当使用jpg作为背景图片时会出现一些故障,并且如果在之后加载了图片,那么标签已被绘制。

无论如何,我建议覆盖onPaint和onDraw方法,如链接中所示。

答案 3 :(得分:0)

透明度仅适用于容器。为此,您必须将标签添加到 PictureBox 。将Panels更改为您在Controls.Add()行中使用的PictureBox的名称。