多个图片框的透明度

时间:2013-08-07 01:20:11

标签: c# winforms picturebox

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

2 个答案:

答案 0 :(得分:3)

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

但是,所有WinForms控件的透明度通过让透明控件调用其父控件在子控件绘制之前绘制背景来实现。这意味着您不能拥有两个兄弟控件,并希望透明度可以显示在另一个上。遗憾!

所有这一切,都可以编写自己的解决方法来支持这一点。它将涉及在PictureBox覆盖中继承OnPaint和巧妙编码以定位兄弟控件并手动触发它们绘制到内存中位图中。这种方法有很多问题。

尝试WPF!

答案 1 :(得分:0)

这是获得理想结果的提示:

  1. 创建顶部图片的多个副本。
  2. 将每个副本添加到它应覆盖的每个图片框的控件中。
  3. 根据要覆盖的每个图片框的偏移量调整每个副本的位置。
  4. 因此,您将看到大图像的每个副本覆盖每个图片框,就好像它们是单个图像一样。