是否可以将两个重叠的PictureBox控件与透明图像一起使用?

时间:2012-07-10 11:17:41

标签: c# .net winforms picturebox alpha-transparency

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

即使在trying what Microsoft suggests之后,我也无法获得理想的结果。

这就是我目前所拥有的:

enter image description here

这就是我想要的:

enter image description here

所以我的问题是:

使用两个PictureBox控件(或另一种方式)实现我想要的结果的任何方式相互重叠并让透明区域闪耀?

更新

实际上,我使用this answer解决了SO问题“Transparent images with C# WinForms”。

2 个答案:

答案 0 :(得分:17)

试试这个

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);
}

结果

enter image description here

llink

答案 1 :(得分:2)

据我所知,控件的透明度取决于它的父控件(如你给出的链接中所述),这意味着为了获得你想要的效果,你需要有一张图片盒子嵌套在另一个图片盒中,鉴于图片盒不是容器,这是不可能的。

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

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

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