1

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

4

2 回答 2

3

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

但是,所有 WinForms 控件中的透明度通过让透明控件调用其父控件以在子控件绘制之前绘制背景来起作用。这意味着您不能有两个同级控件并期望一个透明性显示到另一个。对不起!

综上所述,可以编写自己的解决方法来支持这一点。它将涉及覆盖PictureBox中的子类化和巧妙的编码,OnPaint以定位同级控件并手动触发将它们绘制到内存位图中。这种方法有很多陷阱。

试试WPF!

于 2013-08-07T01:36:31.163 回答
0

这是获得所需结果的提示:

  1. 创建顶部图像的多个副本。
  2. 将每个副本添加到它应该覆盖的每个图片框的控件中。
  3. 根据要覆盖的每个图片框的偏移量调整每个副本的位置。

因此,您将看到覆盖每个图片框的大图像的每个副本,就好像它们是单个图像一样。

于 2017-01-25T06:01:39.383 回答