【问题标题】:Improve performance when resizing a Form with a Hi-Res background image使用高分辨率背景图像调整表单大小时提高性能
【发布时间】:2013-12-14 16:38:34
【问题描述】:

我有一个带有一些控件的 Winforms,主窗体有一个大图片作为背景,并启用了 BackgroundImageLayout 属性 Stretched

主要问题是调整大小操作变得缓慢,因为 背景图片。

问题在于,调整具有图片和 Stretched BackgroundImageLayout 属性的 Winforms 的大小是一场噩梦!它开始缓慢,并且在调整表单大小时所有控件都在闪烁。

我已尝试减小图像尺寸,但为了不降低图像质量,我无法进一步减小它。

我也尝试过这样做,但并没有减少烦人的效果:

Private Sub Main_ResizeBegin(sender As Object, e As EventArgs) Handles MyBase.ResizeBegin

    GroupBox_Genres.SuspendLayout()
    GroupBox_Options.SuspendLayout()
    ListBox_Genres.SuspendLayout()
    ListView_Elektro1.SuspendLayout()

    Me.BackgroundImageLayout = ImageLayout.None
    Me.SuspendLayout()

End Sub

Private Sub Main_ResizeEnd(sender As Object, e As EventArgs) Handles MyBase.ResizeEnd

    GroupBox_Genres.ResumeLayout()
    GroupBox_Options.ResumeLayout()
    ListBox_Genres.ResumeLayout()
    ListView_Elektro1.ResumeLayout()
    Me.BackgroundImageLayout = ImageLayout.Stretch
    Me.ResumeLayout()

End Sub

关于如何解决以大图片作为背景调整 Winform 大小的缓慢和烦人的影响的任何想法?

编辑

为了了解我的问题,应用程序是这样的:

【问题讨论】:

  • 查看this 帖子。
  • @Bjørn-Roger Kringsjå 我的表单已经被双缓冲,但在调整表单大小时仍然很慢

标签: .net vb.net winforms resize paintevent


【解决方案1】:

在您的表单中使用以下代码以避免表单闪烁,这也可以避免您的图像闪烁。你不需要调整你正在使用的图像的大小。

Protected Overrides ReadOnly Property CreateParams() As Windows.Forms.CreateParams
    Get
        Dim cp As CreateParams = MyBase.CreateParams
        cp.ExStyle = cp.ExStyle Or &H2000000
        Return cp
    End Get
End Property

这将在您的表单中绘制控件,并在所有控件加载后使表单可见并避免闪烁。

【讨论】:

  • 谢谢,但我想提高性能,而不是失去它,我之前用“防闪烁魔法代码”做了很多性能测试,当无论如何,谢谢你,现在真的闪烁不是我的问题,调整大小操作变得很慢,因为我想避免背景图像。
  • 你能解释一下代码吗?这段代码的实际流程是什么?什么时候会调用这段特定的代码。?将返回变量cp。?如果您给出一些解释,这对我和其他人都会有所帮助。谢谢。
  • 这不会加快控件的绘制速度,但它会在屏幕上停留一段时间,然后只显示更新的屏幕而不是闪烁
猜你喜欢
  • 2014-08-01
  • 2014-02-02
  • 1970-01-01
  • 2015-03-12
  • 1970-01-01
  • 2011-06-12
  • 2020-06-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多