PictureBox 透明度 - 无法正常工作

PictureBox transparency - not working properly

我有一个图片框(地图),我在上面添加了其他图片框(图钉)。 (在 winforms 应用程序上)。 我将引脚背景色设置为透明。每个图钉的父级是地图。 问题是引脚透明度无法正常工作。每个图钉都有地图背景。有 100 多个图钉,如果地图背景与图钉背景不同,靠近的图钉更多的地方,您可以看到图钉角。 我也尝试使用面板和标签而不是 PictureBox,但没有成功。 请给我一个解决问题的想法。 谢谢。

好吧,呃。 Windows 不是 Photoshop。或闪光灯。或银光。或者 WPF。

Windows 使用一个非常简单的分层系统,允许在特定条件下透明,但它实际上更像是一种解决方法,而不是成熟的分层系统。基本上,当你想透明地渲染一个图像时,你首先让你下面的控件渲染它自己,然后你再渲染它。

由于整个层次结构的工作方式,这意味着默认情况下,透明度仅适用于父子关系 - 子项可以轻松地将父项渲染为自身的一部分,甚至可以省略渲染自己的特定情况下的背景。因此,如果您将图钉作为背景的子项,透明度将按预期工作。

然而,PictureBox 无论如何只是真正为显示图片而设计的。如果您需要渲染具有数百个图钉的地图,您几乎肯定不想使用 windows 控件来执行此操作。处理渲染背景和图钉的所有者绘制的控件可能会更好地工作。如果这对您的用例来说太难了,您可能想看看 WPF - 您可以轻松地将 WPF 控件嵌入到 Winforms 控件中,并且 WPF 为您尝试做的事情提供了很多更好的工具。