Visual Basic PictureBox 面板闪烁
Visual Basic PictureBox Panel Flicker
我正在制作一个简单的游戏(主要部分)由一个面板组成,面板内部有 32 个图片框,每个图片框都有一个背景图像。您单击 "tile",它会翻转显示一张图片。我的问题是当表单加载时,我可以看到它正在绘制。我看到面板 .. 然后清空 PictureBoxes,最后用 BackgroundImages 填充 PictureBoxes。
我已经将表单的 DoubleBuffer 设置为 True,并且还添加了以下内容:
Private Sub UseDoubleBuffer()
Me.SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.UserPaint Or ControlStyles.DoubleBuffer, True)
Me.UpdateStyles()
End Sub
我在加载表单时调用它。我不确定我还能做什么?我希望它只是 'pop' 到屏幕上。为什么 DoubleBuffer 不工作?我需要手动对面板进行编码吗?我试图避免这种情况,因为拖放到表单中显然更容易,但如果我需要,我会的。
显然我无法 post 截屏,因为我的代表还不够高,但请相信我,它看起来很丑陋,我确实想让它尽可能地圆滑。有什么想法吗?
尝试使图片框不可见 (.visible = false),直到它们全部加载完毕,然后将所有图片框的可见设置为 true。
尝试创建无闪烁的自定义面板控件:
以下是使用此控件的步骤:
1. 将新的 class "NonFlickerPanel" 添加到您的 C# 应用程序。
2. 将自动生成的 class 代码替换为如下所示的 C# 代码。
3. 在您的应用程序中使用 NonFlickerPanel 对象而不是 Panel 对象。
public partial class NonFlickerPanel : Panel
{
public NonFlickerPanel() : base()
{
this.SetStyle(ControlStyles.AllPaintingInWmPaint,
ControlStyles.UserPaint
ControlStyles.OptimizedDoubleBuffer,
true);
}
}
我正在制作一个简单的游戏(主要部分)由一个面板组成,面板内部有 32 个图片框,每个图片框都有一个背景图像。您单击 "tile",它会翻转显示一张图片。我的问题是当表单加载时,我可以看到它正在绘制。我看到面板 .. 然后清空 PictureBoxes,最后用 BackgroundImages 填充 PictureBoxes。
我已经将表单的 DoubleBuffer 设置为 True,并且还添加了以下内容:
Private Sub UseDoubleBuffer()
Me.SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.UserPaint Or ControlStyles.DoubleBuffer, True)
Me.UpdateStyles()
End Sub
我在加载表单时调用它。我不确定我还能做什么?我希望它只是 'pop' 到屏幕上。为什么 DoubleBuffer 不工作?我需要手动对面板进行编码吗?我试图避免这种情况,因为拖放到表单中显然更容易,但如果我需要,我会的。
显然我无法 post 截屏,因为我的代表还不够高,但请相信我,它看起来很丑陋,我确实想让它尽可能地圆滑。有什么想法吗?
尝试使图片框不可见 (.visible = false),直到它们全部加载完毕,然后将所有图片框的可见设置为 true。
尝试创建无闪烁的自定义面板控件:
以下是使用此控件的步骤: 1. 将新的 class "NonFlickerPanel" 添加到您的 C# 应用程序。 2. 将自动生成的 class 代码替换为如下所示的 C# 代码。 3. 在您的应用程序中使用 NonFlickerPanel 对象而不是 Panel 对象。
public partial class NonFlickerPanel : Panel
{
public NonFlickerPanel() : base()
{
this.SetStyle(ControlStyles.AllPaintingInWmPaint,
ControlStyles.UserPaint
ControlStyles.OptimizedDoubleBuffer,
true);
}
}