使用高分辨率背景图像调整窗体大小时,可以提高性能

时间:2013-12-14 16:38:34

标签: .net vb.net winforms resize paintevent

我有一些带有一些控件的 Winforms ,并且主要表单的背景很大,启用了BackgroundImageLayout属性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

如何解决以大图为背景调整winforms大小的缓慢而恼人的效果的想法?。

  

修改

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

enter image description here

1 个答案:

答案 0 :(得分:3)

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

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

这将在表单中绘制控件,并在加载所有控件后显示表单,避免闪烁。