我有一个PictureBox(地图),我添加了其他PictureBoxes(图钉)。 (在winforms应用程序上)。 我设置针背色透明。每个pin的父级都是地图。 问题是引脚透明度不能正常工作。每个图钉都有地图背景。如果地图背景与引脚背景不同,则有超过100个引脚,如果有更多引脚关闭,则可以看到引脚角。 我也尝试使用面板和标签代替PictureBox,但没有成功。 请告诉我如何解决问题。 谢谢。
答案 0 :(得分:1)
Windows使用一个非常简单的分层系统,在某些条件下允许透明,但它实际上更像是一个解决方法,而不是一个完整的分层系统。基本上,当你想透明地渲染图像时,首先要求你下面的控件渲染自己,然后你渲染它。
由于整个层次结构的工作方式,这意味着默认情况下,透明度仅适用于父子关系 - 孩子可以轻松地将父项作为其自身的一部分进行渲染,甚至可以省略渲染自己的背景某些情况下。因此,如果你的主要背景是孩子,那么透明度就会按预期发挥作用。
然而,PictureBox
仅用于显示图片。如果你需要渲染一个包含数百个引脚的地图,你几乎肯定不想使用Windows控件来做到这一点。处理渲染背景和引脚的所有者绘制控件可能会更好地工作。如果这对你的用例来说太难了,你可能想看看WPF - 你可以很容易地在Winforms控件中嵌入一个WPF控件,而WPF为你提供了很多更好的工具。