2013-12-14 3 views
0

У меня есть Winforms с некоторыми элементами управления и основная форма имеет большое изображение в качестве фона с BackgroundImageLayout свойство enabled.Улучшение производительности при изменении размера формы с фоном Hi-Res

Основная проблема заключается в том, что операция изменения размера медленно поворачивается, потому что фоновое изображение .

Проблема в том, что изменение размера Winforms, имеющего изображение, и растянутое свойство BackgroundImageLayout - это кошмар! он начинает медленно, и все элементы управления мерцают при изменении размера формы.

Я попытался уменьшить размер изображения, но я не могу уменьшить его, чтобы не потерять качество изображения.

Я пытался также сделать что-то подобное, но не уменьшило раздражающий эффект:

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 с большим изображением как задний план?.

EDIT

Для взять идею моей проблемы применения заключается в следующем:

enter image description here

+0

Отправлено [this] (http://stackoverflow.com/questions/76993/how-to-double-buffer-net-controls-on-a-form) сообщение. –

+0

@ Bjørn-Roger Kringsjå Моя форма уже дважды буферизована, но все еще медленна при изменении размера формы. – ElektroStudios

ответ

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 

Это будет окрашивать элементы управления в вашей форме и приносит форму видимой после загрузки всех элементов управления и избежать мерцания.

+0

Спасибо, но я хотел улучшить производительность, а не потерять ее. Я сделал много лет тестов производительности с этой «мерцающей магией» код "и при использовании приложения на 30% медленнее, спасибо, так или иначе, действительно мерцание не является моей проблемой сейчас, операция изменения размера становится медленной, потому что фоновое изображение - это то, чего я хочу избежать. – ElektroStudios

+0

Не могли бы вы немного объяснить код? Каков фактический поток этого кода? когда вызывается этот конкретный кусок кода.? На что будет возвращена переменная 'cp'.? Это будет полезно как для меня, так и для других, если вы дадите несколько объяснений. Благодарю. –

+0

это не ускорит картину управления, но некоторое время удерживает экран и просто покажет обновленный экран вместо мерцания – Haji

 Смежные вопросы

  • Нет связанных вопросов^_^