有两个重叠的PictureBox
控件,我试图使图片框的透明区域让下面的控件(按 z 顺序)可见。
即使在尝试了微软的建议之后,我也无法得到想要的结果。
这是我目前拥有的:
这就是我想要的:
所以我的问题是:
PictureBox
有什么方法可以通过两个相互重叠的控件(或其他方式)来实现我想要的结果并让透明区域发光?
更新:
实际上,我通过使用SO 问题“带有 C# WinForms 的透明图像”的答案解决了这个问题。
有两个重叠的PictureBox
控件,我试图使图片框的透明区域让下面的控件(按 z 顺序)可见。
即使在尝试了微软的建议之后,我也无法得到想要的结果。
这是我目前拥有的:
这就是我想要的:
所以我的问题是:
PictureBox
有什么方法可以通过两个相互重叠的控件(或其他方式)来实现我想要的结果并让透明区域发光?
更新:
实际上,我通过使用SO 问题“带有 C# WinForms 的透明图像”的答案解决了这个问题。
尝试这个
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);
}
结果
据我所知,控件的透明度取决于其父控件(如您提供的链接中所述),这意味着为了获得您想要的效果,您需要将一个图片框嵌套到鉴于图片框不是容器,另一个图片框是不可能的。
但是,您可以使用自定义容器控件而不是父图像的图片框。最基本的控件是面板。只需设置控件的背景图片,并将第二个图片框放入其中即可。
另一种解决方案是使用单个图片框并手动管理渲染。
这是迄今为止最好的解决方案,因为另一种方法的伪模拟透明度非常低效。