我有一组排列在正方形的图片框。我想在顶部放一个更大,更透明的图片框。但是当我这样做时,它覆盖了其他图片框,只是绘制了表单的背景。
有没有办法让它让所有其他图片框显示它是透明的?
答案 0 :(得分:3)
WinForms的透明度并不高。有些控件有透明度支持,有些则没有。可以对某些控件进行子类化以启用此功能(通过使用Control.SetStyle()
标志调用SupportsTransparency
)。我相信这可以通过PictureBox
完成。
但是,所有WinForms控件的透明度通过让透明控件调用其父控件在子控件绘制之前绘制背景来实现。这意味着您不能拥有两个兄弟控件,并希望透明度可以显示在另一个上。遗憾!
所有这一切,都可以编写自己的解决方法来支持这一点。它将涉及在PictureBox
覆盖中继承OnPaint
和巧妙编码以定位兄弟控件并手动触发它们绘制到内存中位图中。这种方法有很多问题。
尝试WPF!
答案 1 :(得分:0)
这是获得理想结果的提示:
因此,您将看到大图像的每个副本覆盖每个图片框,就好像它们是单个图像一样。