Demonstra Passo a passo: Atualizando um aplicativo Visual Basic 6.0 para a versão mais recente do Visual Basic

Esta explicação passo a passo, você irá atualizar um aplicativo de exemplo do Visual Basic gráficos para Visual Basic 2008. Além de ilustrar o processo atualização, esta explicação passo a passo realça as diferenças em arquiteturas de elementos gráficos entre o Visual Basic 6.0 e o Visual Basic 2008.Isso também deve servir como uma introdução para lidar com problemas de arquitetura em seus aplicativos.

O aplicativo de exemplo nesse caso é um formulário simples que contém dois botões, uma caixa Imagem, um timer, e um controle de imagem ocultos.Embora não seja típica da maioria dos aplicativos que você desejará atualizar, ele apresentar várias questões desafiadoras que você pode encontrar ao atualizar seus próprios aplicativos.

Observação:

Este explicação passo a passo requer que o Visual Basic 6.0 tenha sido instalado em seu computador de desenvolvimento.

Para criar o aplicativo Visual Basic 6.0

  1. Abra o Visual Basic 6.0.No menu File, escolha New Project.

  2. Na caixa de diálogo New Project, escolha Standard EXE, e clique em OK.

  3. Adicionar um PictureBox o controle para o formulário e dimensione-o para preencher a maior parte do formulário, deixando espaço na parte inferior.

  4. conjunto o AutoRedraw propriedade para True, o DrawStyle propriedade para 0-Solide o FillStyle propriedade para 0-Solid.

  5. Adicionar dois CommandButton controles abaixo a PictureBox controle.

  6. selecionar a primeira CommandButton, e conjunto o Name propriedade para ClearPictureBox e o Caption propriedade para Clear.

  7. selecionar o segundo CommandButton, e conjunto o Name propriedade para ShowImage e o Caption propriedade para Show Image.

  8. Adicionar um Image o controle para o formulário e defina o Name propriedade para sourceImage e o Visible propriedade para False.

  9. conjunto o Picture propriedade das Image controle para uma imagem de bitmap qualquer. Você pode usar uma das imagens na sua pasta Minhas Imagens.

  10. Adicionar um Timer controle ao formulário. conjunto o Enabled propriedade para False e o Interval propriedade para 25.

  11. Clique duas vezes no formulário para abrir o Editor de Código, e digite o código a seguir.

    Option Explicit
    Private LeftPos As Double
    
    Private Sub ClearPictureBox_Click()
        Picture1.Cls
    End Sub
    
    Private Sub ShowImage_Click()
        LeftPos = 1
        Me.Timer1.Enabled = True
    End Sub
    
    Private Sub Timer1_Timer()
    
        If LeftPos <= 0 Then
            Me.Timer1.Enabled = False
            Picture1.Print "Visual Basic ROCKS!"
        Else
            LeftPos = LeftPos - 0.01
            Picture1.Cls
            Picture1.PaintPicture sourceImage, LeftPos * _
    Picture1.Width, 0
        End If
    End Sub
    
  12. Pressione F5 para executar o aplicativo.Clique nos botões para observar o comportamento, e depure o código para ver como ele funciona.

  13. No menu File, escolha Save Project As.

  14. No Salvar arquivo sistema autônomo caixa de diálogo , salve o formulário sistema autônomo PicForm.frm e salve o projeto sistema autônomo Drawing.vbp.

Para executar o Assistente de Atualização

  1. Abra Visual Basic 2008.No menu File, escolha Open Project.

  2. Na caixa de diálogo Open Project, localize e abra o arquivo Drawing.vbp.

    Isso inicia o Assistente de Atualização do Visual Basic.A primeira página do assistente contém uma explicação sobre o que o assistente irá fazer.

  3. clicar Next para ir para a segunda página do assistente. Esta página apresenta opções para atualizar; nesse caso não há opções aplicáveis disponíveis.

  4. clicar Next para ir para a terceira página do assistente. clicar Next para aceitar o localização padrão para o novo projeto ou digite uma localidade diferente. A localidade padrão é uma nova pasta imediatamente abaixo à pasta do projeto Visual Basic 6.0.

    Se solicitado para criar uma nova pasta, escolha Yes.

  5. Na página do Assistente de quarta, clicar Next Para iniciar a atualização.

    Quando a atualização é concluída, o Assistente fecha, e o novo projeto aparece na Solution Explorer.

Para exibir os resultados de atualização

  1. No Solution Explorer, selecione _UpgradeReport.htm e clique duas vezes nele para abrir o relatório de atualização.

    Observe que o relatório não mostra nenhum problema global que precise ser enfocado, para PicForm.vb ele mostra seis erros e nenhum aviso.

    Observação:

    Se houvessem avisos, eles também seriam exibidos na Lista de tarefas janela sistema autônomo itens UPGRADE_WARNING.Avisos são para código que podem causar diferenças sutis no comportamento em tempo de execução do seu aplicativo.Clicando duas vezes um UPGRADE_WARNING na janela Task List leva você diretamente para o código que talvez precise ser modificado.

  2. Expanda a seção PicForm.vb clicando no sinal de mais na coluna New Filename.Isso exibe uma lista detalhada dos problemas de atualização para o formulário.

    Observe que os problemas se aplicam a três locais diferentes: the ClearPictureBox_Click procedimento, o Timer1_Timer procedimento e o layout do formulário. Você pode clicar no link Description para exibir um tópico da Ajuda explicando cada questão.As questões de layout neste caso não requerem qualquer ação; a verificação da Ajuda revela que eles são para duas propriedades do Visual Basic 6.0 PictureBox controle que não são mapeadas para equivalente Visual Basic 2008 Propriedades.

Para corrigir o erro ClearPictureBox_Click

  1. In O gerenciador de soluções, selecionar PicForm.vb.Sobre o Modo de exibição menu, escolher Código.

  2. No Editor de código, selecionar o ClearPictureBox_Click procedimento.

    Dica:

    Existe um comentário UPGRADE_ISSUE adicionado ao procedimento.Se você rolar até o final do comentário, você pode clicar no link que exibe o respectivo tópico da Ajuda.Problema de todos os sistema autônomo (exceto para questões de layout) são adicionadas sistema autônomo comentários de código durante uma atualização, incluindo comentários UPGRADE_NOTE explicando o que aconteceu durante a atualização; eles não aparecem no relatório de atualização.

  3. Adicione o seguinte código à ClearPictureBox_Click procedimento:

    Dim g As Graphics = Picture1.CreateGraphics()
    g.Clear(Picture1.BackColor)
    g.Dispose()
    

    O único erro no procedimento original é o Picture1.Cls() telefonar de método. In Visual Basic 2008, sistema autônomo controles intrínsecos não fornecem acesso direto ao seu desenho superfícies com métodos (sistema autônomo no Visual Basic 6.0). Todas as operações de elementos gráficos são tratadas com um objeto especial do tipo Graphics. Você pode acessar a superfície de desenho de um controle chamando o CreateGraphics() método para obter uma instância de um Graphics objeto.

  4. Exclua ou comente a linha original, Picture1.Cls().

Para corrigir os erros Timer1_Timer

  1. No Editor de código, selecionar o Timer1_Tick procedimento.

    Observação:

    O Timer event from the Visual Basic 6.0 Timer control is upgraded to the Tick event of the Visual Basic 2008 Timer component.O Relatório de Atualização mostra o antigo nome do evento; o Editor de Códigos usa o novo nome do evento.

  2. No início da função, adicione o seguinte código:

    Dim g As Graphics = Picture1.CreateGraphics()
    

    sistema autônomo com o procedimento anterior, sistema autônomo erros aqui começam com a falta de um Graphics objeto.

  3. Localize o primeiro UPGRADE_ISSUE, o Picture1.Print método. Adicione o seguinte código:

    g.DrawString("VB .NET ROCKS!", Me.Font, New SolidBrush( _
      Color.Yellow), 0, 0)
    

    The DrawString método para o Graphics objeto substitui o Visual Basic 6.0 Print método. Onde o Print método toma um único Text argumento, DrawString também leva argumentos especificando o Font, um Brush objeto que especifica um Color objeto e as coordenadas para desenhar o texto inicial.

  4. Exclua ou comente a linha original, Picture1.Print("Visual Basic ROCKS!").

  5. Localize a próxima UPGRADE_ISSUE, Picture1.Cls(). Substitua o código com o seguinte:

    g.Clear(Picture1.BackColor)
    
  6. Localize o último UPGRADE_ISSUE, Picture1.PaintPicture. Adicione o seguinte código:

    g.DrawImage(sourceImage.Image, CSng(LeftPos * Picture1.Size.Width), _
      0)
    

    Nesse caso, a DrawImage método para o Graphics classe substitui o PaintPicture método.

  7. Exclua ou comente a linha original, Picture1.PaintPicture(sourceImage, LeftPos * VB6.PixelsToTwipsX(Picture1.Width), 0).

  8. No final do procedimento, adicione o seguinte código:

    g.Dispose()
    

    The Dispose método é necessário para liberar os recursos de memória associados a Graphics objeto.

Para testar o aplicativo

  1. No menu Debug, escolha Start.

    Observação:

    Se você for solicitado para salvar o arquivo de solução, clicar Salvar para salvar o arquivo e executar o aplicativo.

  2. Clique no botão ShowImage.

    Você observará que a imagem cintila ao desenhar.Isso é devido a toda a área ser clareada antes de cada imagem atualizada ser desenhada na tela.

Modificando Posteriormente o Aplicativo

A solução aqui é desenhar apenas as partes necessárias da tela, em vez da área inteira representada pelo Graphics objeto. Você desejará certificar-se de que quando a imagem for desenhada na tela, quaisquer pixels restantes na tela da última telefonar para DrawImage() são obscurecidos com a cor do plano de fundo. Desde que a imagem está movendo da direita para esquerda, você só tem que obscurecer os pixels adicionais para a direita da figura.

Para corrigir o problema de cintilação da tela.

  1. No Timer1_Tick procedimento, substitua o g.Clear(Picture1.BackColor) método com o código a seguir:

    Dim imageWidth As Integer = sourceImage.Image.Width
    Dim imageHeight As Integer = sourceImage.Image.Height
    Dim left As Double = imageWidth + (Picture1.Size.Width * LeftPos)
    
    g.FillRectangle(New SolidBrush(Me.BackColor), _
      New Rectangle(left, 0, 6, imageHeight))
    

    Em vez do Clear método, use o FillRectangle método, usando a cor do plano de fundo para obscurecer quaisquer pixels restantes para a direita da imagem corrente sendo desenhada. Para fazer isso, você primeiro precisa calcular a coordenada da extrema esquerda do retângulo, que é realizada pelas três primeiras linhas de código.

  2. No menu Debug, escolha Start.

  3. Clique no botão ShowImage.

    Você observará que a imagem não mais cintila ao se mover.

Ainda existe um problema adicional que deve ser consertado.Você deve ter percebido que a mensagem exibida no PictureBox controle está em uma fonte menor que a versão original. Isso ocorre porque o Font propriedade das PictureBox controle do aplicativo Visual Basic 6.0 foi definida para Arial negrito 16 no time de design. There is no Font property for the Visual Basic 2008 PictureBox control; instead, the form's default font (Me.Font) is used.Você pode corrigir isso declarando um novo Font objeto.

Para corrigir a fonte

  1. No Timer1_Tick procedimento, adicione a declaração a seguir:

    Dim f As System.Drawing.Font = New System.Drawing.Font("Arial", _
      16, FontStyle.Bold)
    
  2. Na telefonar para g.DrawString, altere o parâmetro de fonte de Me.Font para f.

  3. No menu Debug, escolha Start.

  4. Clique no botão ShowImage.

    Agora o texto é exibido na fonte correta.

Agora que o aplicativo está com a paridade com o aplicativo Visual Basic 6.0 original de volta, você adicionará alguns códigos para melhorar o aplicativo.Afinal, não há nenhuma razão em atualizar o aplicativo se desejar usufruir Visual Basic 2008.

Na próxima etapa, você adicionará funcionalidade para fazer o formulário desaparecer lentamente quando ele é fechado.

Observação:

O efeito de desaparecimento não é visível em monitores de 256 cores; assim para exibir os resultados você precisará definir sua intensidade de cor para High Color ou True Color.O Opacity propriedade funciona somente no Windows XP.

Para aprimorar o aplicativo

  1. No Editor de Códigos, selecione a lista suspensa Class Name e escolha (Form1 Events).

  2. No Nome do método drop-down, selecionar o FormClosing evento.

  3. No procedimento Form1_FormClosing, digite o código a seguir:

    Dim i As Single
    For i = 1 To 0 Step -0.1
      Me.Opacity = i
      Application.DoEvents()
      System.Threading.Thread.Sleep(100)
    Next
    
  4. No menu Debug, escolha Start.

  5. Feche o formulário e observe como ele desaparece gradualmente.

    Você pode controlar a rapidez ele desaparece aumentando o dimensionar da etapa (ou, reduzindo o Sleep atraso).

Consulte também

Conceitos

Elementos gráficos para usuários do Visual Basic 6.0

Referência

Visão Geral dos Formulários do Windows

Outros recursos

Atualizando do Visual Basic 6.0