【问题标题】:C# Label(Transparent backGround) on PictureBox (on Panel)PictureBox(面板上)上的 C# 标签(透明背景)
【发布时间】:2013-10-07 23:36:49
【问题描述】:

我想在 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]); }));

我的图片画得很好,标签也是……但是我在图片下面找到了标签(当我将图片拖出他的位置时,我可以看到每个标签) 所以我想知道,我怎样才能将它们放在透明背景的前面。谢谢你 `

【问题讨论】:

  • 您的 Controls.Add() 调用错误。您必须将其添加到 PictureBox,而不是 Panel。

标签: c# panel picturebox


【解决方案1】:

我认为你应该使用类似 z-index

【讨论】:

  • 请提供一些编码帮助?
【解决方案2】:

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

【讨论】:

  • 它确实带来了它们......但不会得到应有的透明背景。
  • 我假设您使用的是 winforms 是吗?在这种情况下,更改 BackColor 将不起作用。有一些解决方法,但默认情况下在 winforms 中是不可能的,也许你最好使用 WPF。在此处查看一个旧但相关的线程,其中包含透明性的解决方法:stackoverflow.com/questions/4639482/…
  • 我在 WinForms 中需要这个
  • 那么你必须研究我之前评论中列出的一些解决方法。
【解决方案3】:

我想你已经用谷歌搜索过了,但这里有一个 good link about winforms transparency

我曾经编写过许多使用带有透明标签的非常丑陋的皮肤的 winforms 应用程序。我记得当使用 jpg 作为背景图片时有一些小故障,如果图片加载 标签已被绘制。

无论如何,我建议重写 onPaint 和 onDraw 方法,如您在链接中看到的那样。

【讨论】:

  • 是的,我做到了。我自己解决了这个问题,但还是谢谢你们。
【解决方案4】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-05
    • 2011-07-28
    • 2013-01-15
    • 2011-10-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-27
    相关资源
    最近更新 更多