我想在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。谢谢 `
答案 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的名称。