【问题标题】:PictureBox with transparent background [duplicate]具有透明背景的图片框[重复]
【发布时间】:2012-08-21 18:12:37
【问题描述】:

可能重复:
A PictureBox Problem

我有一个TabPage,它承载了一些自定义的PictureBox 控件。我在这里所做的是绘制一些 IC 封装,用户可以单击它们的引脚来获取一些信息。用户可以在标签页中添加多个这样的图片框并在标签页中移动它们。

我的问题是这个图片框是透明的,只有当它们不相互重叠时。在下图中,您可以看到两个添加到标签页的图片框。标签页的背景是蓝色的,其实不管它是什么颜色,图片框的未绘制区域都会对标签页透明:

但是一旦我将这些图片框中的任何一个移到另一个上方,它就不再透明了:

这是生成原始Image 的代码,我将使用它:

    //Setting up image area
    Image = new Bitmap(requiredImageWidth, requiredImageHeight, PixelFormat.Format32bppArgb);
    Image.MakeTransparent();

其余的都是默认设置,我没有更改任何其他内容。您认为导致这种行为的原因是什么?

【问题讨论】:

  • 它不会在移动时重绘背景。尝试在图片框移动时调用Image.MakeTransparent();。但是调用它可能会很昂贵,而且我的猜测图片会闪烁。
  • 另外this 可能很有趣

标签: c# winforms transparency picturebox


【解决方案1】:

从这个article,这就是导致这种行为的原因:

WinForms 中的透明控件相对于它们的父控件是透明的,而不是相对于其他控件。 WinForms 中的透明度更像是伪装,而不是真正的透明度。透明控件实际上并不能让您通过表单看到它背后的控件。 它要求其父级在“透明”控件上绘制自己的背景。这就是为什么透明控件显示其背后的表单,但会覆盖任何其他控件的原因。

您的问题有一个公认的答案here (A PictureBox Problem)

【讨论】:

    猜你喜欢
    • 2023-03-08
    • 2014-08-07
    • 1970-01-01
    • 2021-08-24
    • 2017-02-21
    • 1970-01-01
    • 2011-09-24
    • 1970-01-01
    • 2020-10-29
    相关资源
    最近更新 更多