Usuário com melhor resposta
Tratamento de Imagens

Pergunta
-
Olá estou com um problema, montei um form em VB Net 2010 para capturar e gravar imagem, mas quando vou utiliza-lo ele sempre dá este erro:
AccessViolationException was unhandled>
Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
E trava o sistema, as vezes funciona, mas na maioria continua o erro.
Eu uso o seguinte código para abrir o local da imagem.
Private Sub cmdImagem_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cmdImagem.Click
On Error Resume Next
'con.Open()
Dim OldFile As String
Dim NewFile As String = Directory.GetCurrentDirectory & "\Dados\" & Trim(txtCaminho.Text) & ".jpg"
With OpenFileDialog1
.Filter = "Pictures (*.jpg)|*.jpg"
.RestoreDirectory = True
.ShowHelp = True
.Title = "Selecione uma Foto para este Item"
If .ShowDialog = Windows.Forms.DialogResult.OK Then
'Try
picFoto.Image = Image.FromFile(.FileName)
txtCaminho.Text = OpenFileDialog1.FileName
OldFile = txtCaminho.Text
'Catch ex As Exception
'MsgBox(ex.Message)
'End Try
End If
End With
btnAlterar.Enabled = True
'con.Close()
End SubAlguém sabe como resolver o problema???
Respostas
-
não o problema tá acontecendo o seguinte, quando eu inicio o vb ele e vou abrir direto o form2 ele dá este erro de imagem, mas quando vou abrir primeiro o form1 aí dá certo e depois continua certo, somente quando eu inicio o debug
- Marcado como Resposta LHPHenrique segunda-feira, 5 de maio de 2014 17:06
Todas as Respostas
-
-
-
-
-
-
-
-
aqui que aparece o erro Herbert
If .ShowDialog = Windows.Forms.DialogResult.OK Then
Not good!
Tente reescrever o código assim:
Private Sub cmdImagem_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cmdImagem.Click 'con.Open() Dim OldFile As String Dim NewFile As String = Directory.GetCurrentDirectory & "\Dados\" & Trim(txtCaminho.Text) & ".jpg" Dim dialog As New OpenFileDialog() 'dialog.Filter = "Pictures (*.jpg)|*.jpg" 'dialog.RestoreDirectory = True 'dialog.ShowHelp = True 'dialog.Title = "Selecione uma Foto para este Item" 'Note que eu comentei as 4 linhas acima. 'Primeiro rode o código exatamente assim. 'Caso funcione, você descomenta uma linha e roda de novo. 'Repita o processo até descomentar todas as linhas 'Então dê um retorno dizendo como foi os testes... If dialog.ShowDialog() = Windows.Forms.DialogResult.OK Then picFoto.Image = Image.FromFile(dialog.FileName) txtCaminho.Text = dialog.FileName OldFile = txtCaminho.Text End If btnAlterar.Enabled = True 'con.Close() End Sub
Herbert Lausmann
- Editado Herbert Lausmann segunda-feira, 5 de maio de 2014 14:09 Correção...
-
-
pode esta ocorrendo do form1 não esta fechando a imagem
Declare OpenFileDialog como variavel global do form e no Dispose do form você executa o dialog.Dispose()
- Editado Gustavo A. Gonçalves segunda-feira, 5 de maio de 2014 14:24
-
-
não o problema tá acontecendo o seguinte, quando eu inicio o vb ele e vou abrir direto o form2 ele dá este erro de imagem, mas quando vou abrir primeiro o form1 aí dá certo e depois continua certo, somente quando eu inicio o debug
- Marcado como Resposta LHPHenrique segunda-feira, 5 de maio de 2014 17:06
-
Dim dialog As New OpenFileDialog()
' Implement IDisposable. Public Overloads Sub Dispose() Implements IDisposable.Dispose if(dialog!=null) dialog.Dispose(); base.Dispose(); End Sub
http://msdn.microsoft.com/pt-br/library/vstudio/b1yfkh5e(v=vs.100).aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1- Editado Gustavo A. Gonçalves segunda-feira, 5 de maio de 2014 15:59 Referencia
-