Na aula passada vimos que, quando adicionado um Loop para desenhar o jogo o Form fica piscando. Isso se deve, pois estamos vendo o computador apagando o desenho. Primeiro ele desenha todas as sprites e animaçãoes, e depois ele limpa tudo e desenha novamente.
O que devemos fazer?
Não devemos desenhar direto no form, desenhamos tudo em um bitmap na memória e, depois de feito isso desenharemos esse bitmap no Form. Essa técnica se denomina BackBuffer.
Sem longas palavras e vamos começar. Adicione uma variável com o nome de BackBuffer e do tipo bitmap.
Vamos inicializar pegando o tamanho do Form no evento Form_Load.
A linha abaixo já pode ser apagada.
g = Me.CreateGraphics
Lembre-se esse bitmap que acabamos de criar não há imagem alguma, ele é apenas do tamanho do form.
Observe a imagem abaixo e veja o que mudou :
' Indico que g irá desenhar em BackBuffer.
g = Graphics.FromImage(BackBuffer)
' g agora está para BackBuffer, então limpa o bitmap com preto.
g.Clear(Color.Teal)
' Desenha todas as imagens normalmente, mas dessa vez no buffer.
'Terminado de desenhar, libera g do bitmap e encerra g.
g.Dispose()
' Agora indico que g irá desenhar no Form.
g = Me.CreateGraphics
' Desenho a imagem BackBuffer no form, coordenada 0,0.
g.DrawImage(BackBuffer, 0, 0)
'Terminado de desenhar, libera g do form e encerra g.
g.Dispose()
Pronto, fácil de entender!
Primeiro desenhamos os personagens,tiles, animações na memória, em um bitmap.
Depois de tudo pronto, desenhamos esse bitmap no form. Desenhar em um BackBuffer é considerável mais rápido que desenhar em uma superfície visível e isso vai permitir seu GDI+ correr mais rápido. Essa é a técnica de buffer.
Aquilo que ocorreu com o form piscando é chamado de Flicker (Tremulação).
Agora dê um Play e veja o resultado.
[URL=http://www.4shared.com/rar/X4fVFVcS/Game_Project_-_mmorpgbr_-_07.html[/URL]
O que devemos fazer?
Não devemos desenhar direto no form, desenhamos tudo em um bitmap na memória e, depois de feito isso desenharemos esse bitmap no Form. Essa técnica se denomina BackBuffer.
Sem longas palavras e vamos começar. Adicione uma variável com o nome de BackBuffer e do tipo bitmap.
Vamos inicializar pegando o tamanho do Form no evento Form_Load.
A linha abaixo já pode ser apagada.
g = Me.CreateGraphics
Lembre-se esse bitmap que acabamos de criar não há imagem alguma, ele é apenas do tamanho do form.
Observe a imagem abaixo e veja o que mudou :
' Indico que g irá desenhar em BackBuffer.
g = Graphics.FromImage(BackBuffer)
' g agora está para BackBuffer, então limpa o bitmap com preto.
g.Clear(Color.Teal)
' Desenha todas as imagens normalmente, mas dessa vez no buffer.
'Terminado de desenhar, libera g do bitmap e encerra g.
g.Dispose()
' Agora indico que g irá desenhar no Form.
g = Me.CreateGraphics
' Desenho a imagem BackBuffer no form, coordenada 0,0.
g.DrawImage(BackBuffer, 0, 0)
'Terminado de desenhar, libera g do form e encerra g.
g.Dispose()
Pronto, fácil de entender!
Primeiro desenhamos os personagens,tiles, animações na memória, em um bitmap.
Depois de tudo pronto, desenhamos esse bitmap no form. Desenhar em um BackBuffer é considerável mais rápido que desenhar em uma superfície visível e isso vai permitir seu GDI+ correr mais rápido. Essa é a técnica de buffer.
Aquilo que ocorreu com o form piscando é chamado de Flicker (Tremulação).
Agora dê um Play e veja o resultado.
[URL=http://www.4shared.com/rar/X4fVFVcS/Game_Project_-_mmorpgbr_-_07.html[/URL]