O método Image.Save não salva o arquivo como o tipo de arquivo selecionado no Visual Basic .NET ou no Visual Basic 2005

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 316563
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Sintomas
Quando você usa o método Image.Save para salvar uma imagem gráfica como um formato de metarquivo do Windows (WMF), Enhanced Metafile Format (EMF) ou tipo de arquivo de ícone, o arquivo resultante é salvo como um arquivo Portable Network Graphics (PNG).
Causa
Esse comportamento ocorre porque o componente GDI + do .NET Framework não tem um codificador que lhe permite salvar arquivos como arquivos WMF, EMF ou ícone.
Situação
Esse comportamento é por design.
Mais Informações
O componente GDI + do .NET Framework tem internos codificadores e decodificadores que oferecem suporte a ler e gravar os seguintes tipos de arquivo:
  • BMP
  • GIF
  • JPEG
  • PNG
  • TIFF
GDI + possui adicionais decodificadores internos que suportam a funcionalidade de somente leitura para os seguintes tipos de arquivo:
  • WMF
  • EMF
  • ÍCONE

Etapas para reproduzir o problema

  1. Inicie o Microsoft Visual Studio .NET ou Microsoft Visual Studio 2005.
  2. Crie um novo aplicativo do Windows no Visual Basic .NET ou no Visual Basic 2005.
  3. Adicione um controle de botão ao formulário padrão.
  4. Defina as propriedades do botão como segue:
    nome: Button1
    texto: Salvar
  5. No menu Exibir , clique em código para exibir o módulo de classe do formulário.
  6. Adicione a instrução a seguir na parte superior da janela código, acima definição de classe do formulário:
    Imports System.Drawing.Imaging					
  7. No menu Exibir , clique em Designer para exibir o criador do formulário.
  8. Clique duas vezes no controle de botão para inserir o manipulador de eventos Click para o controle de botão.
  9. Substitua o procedimento de evento clique com o seguinte código:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click   'Replace the path below to the path of an image on   'your computer.   Dim strSourceFile As String = "C:\Windows\greenstone.bmp"   'Replace the path below to the path of a WMF file to create   Dim strDestFile As String = "C:\Windows\greenstone.wmf"   Try       'Load the image using the FromFile method and store it in       'the imgOriginal variable.       Dim imgOriginal As Image = Image.FromFile(strSourceFile)       MessageBox.Show(ControlChars.Quote & strSourceFile & _          ControlChars.Quote & " loaded successfully.")       'Save the original image out as a Windows MetaFile Format file.       imgOriginal.Save(strDestFile, ImageFormat.Wmf)       MessageBox.Show(ControlChars.Quote & strDestFile & _          ControlChars.Quote & " was saved successfully.")       'Load the new image using the FromFile method and attempt       'to store it in a variable declared as MetaFile.       Dim wmfNew As Metafile = Image.FromFile(strDestFile) '<--Code fails here       MessageBox.Show(ControlChars.Quote & strDestFile & _          ControlChars.Quote & " loaded successfully.")   Catch excFileNotFound As System.IO.FileNotFoundException       MessageBox.Show(ControlChars.Quote & strSourceFile & _          ControlChars.Quote & " is not a valid path. " & _          "Please correct the code to use a valid path.")   End TryEnd Sub					

  10. Substitua o caminho da variável strSourceFile com o caminho para um arquivo de imagem em seu computador.
  11. Substitua o caminho da variável strDestFile pelo nome de um arquivo WMF para criar no seu computador.
  12. Pressione F5 para compilar e executar o aplicativo.
  13. Clique no botão.

    Você recebe uma mensagem que indica que o arquivo de imagem original foi carregado com êxito.
  14. Clique em OK para fechar a caixa de diálogo da mensagem.

    Você recebe uma segunda mensagem que indica que o novo arquivo de imagem foi salvo com êxito.
  15. Clique em OK .
Observe que o código é interrompida com a seguinte exceção:
Ocorreu uma exceção sem tratamento do tipo 'System.InvalidCastException' no application name .exe

Obter informações adicionais: especificado a conversão não é válida.
Referências
Para obter mais informações sobre como usar imagem codificadores e decodificadores no Visual Studio. NET, visite o seguinte site da MSDN:

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 316563 - Última Revisão: 12/07/2015 08:43:54 - Revisão: 2.2

Microsoft Visual Basic 2005 Express Edition, Microsoft Visual Basic .NET 2003 Standard Edition, Microsoft Visual Basic .NET 2002 Standard Edition

  • kbnosurvey kbarchive kbmt kbvs2005applies kbvs2005swept kbnofix kbprb KB316563 KbMtpt
Comentários