【问题标题】:Can I create a transparent background on a PictureBox in WinForms?我可以在 WinForms 中的 PictureBox 上创建透明背景吗?
【发布时间】:2011-02-13 11:03:41
【问题描述】:

我想让PictureBox 控件的背景透明。在PictureBox(矩形)中,我放置了一个图标(圆形)。我想让图标透明,以便图标下方的其他部分可见。

我尝试将PictureBox.BackColor 属性设置为“透明”,但它不起作用。我还尝试在运行时使用Color.FromArgb 方法设置它,但它也不起作用。

有没有办法解决这个问题?

【问题讨论】:

标签: c# winforms transparent picturebox


【解决方案1】:

设置pictureBox.BackColor = Color.Transparent; 肯定可以。

在使用Color.FromArgb(0, 0, 0, 0) 时,还要验证您是否设置了颜色的 Alpha 通道; (这是第一个参数,零表示透明色)

当然,还要确保您的图标具有透明背景。

【讨论】:

  • 将背景颜色设置为透明并不会使这些像素默认透明。它使它们具有父控件的背景颜色。
  • @CodeInChaos:当然,当“透明”控件与其他控件重叠时可以看到。那是因为“透明”控件要求父控件绘制它的背景。
  • AFAIK,这只会根据您在 cmets 中对我的回答的示例起作用:也就是说,当父控件不使用纯色(即图像)时。
  • @Mr.失望:这不取决于父控件使用什么类型的背景 - 无论是图像还是实体控件,还是 userPaint - 父控件的背景将绘制在“透明”子控件上。
【解决方案2】:

如果使用WinForms,那么将背景颜色设置为透明将不起作用,因为透明度处理不是级联系统 - 您只能(在大多数情况下)使用Opacity 属性,但是这将改变整个控件显示的 Alpha 通道,使您的图像具有透视性。

一种解决方案可能是将PictureBox 的背景颜色设置为其下方控件的背景颜色(例如,表单的颜色)。但这在您的情况下可能还不够。

【讨论】:

  • 在 winforms 中透明不适用于表单背景,但它适用于控件。
  • 而且WPF中没有PictureBox控件。有一个图像控件。
  • @lazyberezovsky:并非所有控件 - 尝试为 Label 配置背景透明度,例如(显然,对于 PictureBox。当然,我在两个框架中都使用了 PictureBox无论如何都要引用 wo WPF
  • 标签工作正常。有些控件不允许透明背景(ListBox、TextBox 等),但这是另一回事。
  • 您有Label 和/或PictureBox 以这种方式正常工作 的示例吗?作为一个健全的检查,我刚刚创建了一个项目来测试并将Transparent设置为背景,只是让两个控件都具有Control(参见:灰色)背景。
【解决方案3】:

您好,您必须使用此功能将图标设置在图标下方的其他部分

icon_pictureBox_name.Controls.Add(other_portion_picturBox_name);

然后您可以将 PictureBox.BackColor 属性设置为“透明”,它会起作用;)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-12
    • 2017-02-01
    • 1970-01-01
    • 2012-06-17
    相关资源
    最近更新 更多