图片框的 BringToFront() 和 SendToBack() 函数在我的 VB 表单程序上不起作用,是否有原因?

问题描述 投票:0回答:1

我正在使用图片框作为按钮和菜单编写 UI。它们运行良好,但是当我的弹出菜单弹出时,它会在我的 UI 按钮后面弹出。 除此之外,两个图片框的透明度似乎都不起作用,因为当 Visual Basic 将像素视为透明时,它显示背景而不是其后面的图片框。

发生这种情况后,我尝试使用图片框的内置函数 BringToFront() 和 SendToBack(),但没有进行任何更改。

vb.net forms user-interface picturebox bringtofront
1个回答
0
投票

我正在使用图片框作为按钮和菜单编写 UI。

这是一个坏主意,会损害应用程序的性能、内存使用和优化。

两个图片框的透明度似乎不起作用

这是 Windows 窗体(以及之前的 MFC)的一个长期存在的“功能”。在透明度变得普遍且简单/快速之前,这是一种性能优化,使这成为可能。也就是说,它不是真正的透明度,而是通过在绘制控件时捕获控件后面的图像来“伪造”透明度,在捕获的位图之上绘制透明图像,然后使用新的组合位图作为真实背景图像。它适用于基本的事情,但会在更动态的布局上引起问题。 “但我不想要这样”。然后你就可以实现你自己的透明度;否则那就太糟糕了。有一个小解决方法,使用

Invalidate()
方法强制重新绘制,但这不是您可以做的事情,例如,当动画正在运行或用户拖动控件时。

© www.soinside.com 2019 - 2024. All rights reserved.