c# - 多个图片框的透明度

标签 c# winforms picturebox

我有一系列排列成正方形的图片框。我想在顶部放一个更大的、大部分透明的图片框。但是当我这样做时,它会覆盖其他图片框并仅绘制表单的背景。
有没有办法让它让所有其他图片框显示透明的地方?

最佳答案

WinForms 的透明度不太好。有些控件支持透明度,有些则不支持。可以对某些控件进行子类化以启用此功能(通过使用 SupportsTransparency 标志调用 Control.SetStyle())。我相信这可以通过 PictureBox 来完成。

但是,所有 WinForms 控件中的透明度都是通过让透明控件在子控件绘制之前调用其父控件来绘制背景来实现的。这意味着您不能拥有两个同级控件并期望其中一个控件的透明度向另一个控件显示。抱歉!

尽管如此,您还是可以编写自己的解决方法来支持这一点。它将涉及 PictureBox 的子类化和 OnPaint 重写中的巧妙编码,以定位同级控件并手动触发将它们绘制到内存位图中。这种方法有很多问题。

尝试 WPF!

关于c# - 多个图片框的透明度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18093113/

相关文章:

c# - 最小化C#中的字符串长度

c# - 将字符串从文本框传递到 SQL 查询

c# - 与 Entity Framework 和 MySQL 的乐观并发

c# - .gif 在整个循环结束之前不会动画?

c# - 从将其结果传递给 Action<T> 参数的方法返回 Task<T>

c# - 混淆/随机化字符串

c# - 如何在winform上绘制丰富格式的字符串?

javascript - 错误: Unable to get value of the property 'length:' object is null or undefined

c# - 在 C# 中使标签的文本透明

c# - 在缩放模式下平移图片框中的矩形位置