我有一系列排列成正方形的图片框。我想在顶部放一个更大的、大部分透明的图片框。但是当我这样做时,它会覆盖其他图片框并仅绘制表单的背景。
有没有办法让它让所有其他图片框显示透明的地方?
最佳答案
WinForms 的透明度不太好。有些控件支持透明度,有些则不支持。可以对某些控件进行子类化以启用此功能(通过使用 SupportsTransparency
标志调用 Control.SetStyle()
)。我相信这可以通过 PictureBox
来完成。
但是,所有 WinForms 控件中的透明度都是通过让透明控件在子控件绘制之前调用其父控件来绘制背景来实现的。这意味着您不能拥有两个同级控件并期望其中一个控件的透明度向另一个控件显示。抱歉!
尽管如此,您还是可以编写自己的解决方法来支持这一点。它将涉及 PictureBox
的子类化和 OnPaint
重写中的巧妙编码,以定位同级控件并手动触发将它们绘制到内存位图中。这种方法有很多问题。
尝试 WPF!
关于c# - 多个图片框的透明度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18093113/