16

有两个重叠的PictureBox控件,我试图使图片框的透明区域让下面的控件(按 z 顺序)可见。

即使在尝试了微软的建议之后,我也无法得到想要的结果。

这是我目前拥有的:

在此处输入图像描述

这就是我想要的:

在此处输入图像描述

所以我的问题是:

PictureBox有什么方法可以通过两个相互重叠的控件(或其他方式)来实现我想要的结果并让透明区域发光?

更新:

实际上,我通过使用SO 问题“带有 C# WinForms 的透明图像”的答案解决了这个问题。

4

2 回答 2

21

尝试这个

private void Form1_Load(object sender, EventArgs e)
{
  // Transparent background...  
  pictureBoxOverlay.BackColor = Color.Transparent;

  // Change parent for overlay PictureBox...
  pictureBoxOverlay.Parent    = pictureBoxMain;

 // Change overlay PictureBox position in new parent...
 // pictureBoxOverlay.Location  = new Point(0, 0);
}

结果

在此处输入图像描述

关联

于 2012-07-10T12:47:44.043 回答
2

据我所知,控件的透明度取决于其父控件(如您提供的链接中所述),这意味着为了获得您想要的效果,您需要将一个图片框嵌套到鉴于图片框不是容器,另一个图片框是不可能的。

但是,您可以使用自定义容器控件而不是父图像的图片框。最基本的控件是面板。只需设置控件的背景图片,并将第二个图片框放入其中即可。

另一种解决方案是使用单个图片框并手动管理渲染。

这是迄今为止最好的解决方案,因为另一种方法的伪模拟透明度非常低效。

于 2012-07-10T11:41:18.413 回答