【发布时间】:2012-12-03 02:58:55
【问题描述】:
当我为我的 winform 修复背景时,它在表单加载时闪烁。我的表单上有一个表格布局面板,我将所有控件都保留在表格布局面板上。
我将表格布局面板的背景色设置为透明,并将图像设置为背景。为什么我在加载表单时会眨眼?
【问题讨论】:
-
你启用了双缓冲吗?
当我为我的 winform 修复背景时,它在表单加载时闪烁。我的表单上有一个表格布局面板,我将所有控件都保留在表格布局面板上。
我将表格布局面板的背景色设置为透明,并将图像设置为背景。为什么我在加载表单时会眨眼?
【问题讨论】:
WinForms 不能很好地处理透明度(我相信您可能已经注意到,并非所有 WinForms 控件都支持它)。闪烁是因为加载 TableLayoutPanel 及其所有项目时,表单必须找到正确的“图像”(因为控件不像 WPF 或游戏那样支持透明度,而是使用它后面的控件的图像)来显示。当您的每个控件都被加载时,它必须经过这个过程,因此会闪烁。您可以尝试在表单上启用 DoubleBuffering,但是,如果我没记错的话,这可能会导致透明度问题。
如果您发现您正在使用很多透明度和/或想要更多地自定义您的表单,我建议您看看 WPF。它可以更好地控制您的表单(WPF 中的窗口),并支持每个控件的透明度。
【讨论】: