none
no funciona abrir paint con iamgen RRS feed

  • Pregunta

  • hola, quisiera saber porque este medoto no funciona: 
     Private Sub btnMedidad_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnMedidad.Click
            If rbtnLower.Checked Then
                Dim pStart As New Process
                Dim startInfo As New ProcessStartInfo("mspaint.exe")
                startInfo.Arguments = (CurDir() & "\Lower\LowerLimb" & txtID.Text & ".png")
                pStart.StartInfo = startInfo
                pStart.Start()
                pStart.WaitForExit()
                picProtesis.Image = Image.FromFile(CurDir() & "\Lower\LowerLimb" & txtID.Text & ".png")
            End If
            If rbtnUpper.Checked Then
                Dim pStart As New Process
                Dim startInfo As New ProcessStartInfo("mspaint.exe")
                startInfo.Arguments = (CurDir() & "\Upper\UpperLimb" & txtID.Text & ".png")
                pStart.StartInfo = startInfo
                pStart.Start()
                pStart.WaitForExit()
    
                picProtesis.Image = Image.FromFile(CurDir() & "\Upper\UpperLimb" & txtID.Text & ".png")
            End If
        End Sub
    
    el error, lo muesra el paint diciendo que no se encontro la imagen....
    miércoles, 2 de noviembre de 2011 17:11

Respuestas

  • bueno primero debes verificar si la imagen existe? si existe entonces debe ser el argumento

    veo que haces esto

    startInfo.Arguments = (CurDir() & "\Upper\UpperLimb" & txtID.Text & ".png")

    es muy probable que CurDir() o  txtID.Text  te este retornando un valor con espacios, lo que deberias de hacer es encapsular el argumento en comillas dobles, Lo  que pasa que el espacio determina la separacion de argumentos, entonces para asgurarnos que le estamos enviando un solo argumento lo encapsulamos con comillas dobles

    startInfo.Arguments = """" + (CurDir() & "\Upper\UpperLimb" & txtID.Text & ".png") + """"

    Saludos

    Giancarlo Rolando Huarcaya Martinez

     


    Giancarlo Facebook: giancarlo.huarcaya
    miércoles, 2 de noviembre de 2011 17:23
  • Pues has lo siguiente, carga la imagen un StreamMemory y utiliza el metodo Image.FormStream para cargar la imagen PictureBox, de la siguiente manera

    PictureBox1.Image = Image.FromStream(GetStream("C:\Users\Public\Pictures\Sample Pictures\Desert.jpg"))
    
    Public Function GetStream(ByVal fileName) As Stream
            Using f = File.Open(fileName, FileMode.Open)
                Dim ms As New MemoryStream
                f.CopyTo(ms)
                ms.Position = 0
                ms.Flush()
                Return ms
            End Using
           
        End Function

    con esto logras que el recurso siempre este disponible

    Saludos,

    Giancarlo Rolando Huarcaya Martinez


    Giancarlo Facebook: giancarlo.huarcaya
    miércoles, 2 de noviembre de 2011 19:08

Todas las respuestas

  • has validado que la ruta a la imagen que armas este correcta ?

    si en el Inicio -> Run de windows pones

    mspaint.exe

    al ejecutar se lanzar el Paint ?

    no obtienes ningun mensaje de error cuando no funciona ?

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    miércoles, 2 de noviembre de 2011 17:14
  • bueno primero debes verificar si la imagen existe? si existe entonces debe ser el argumento

    veo que haces esto

    startInfo.Arguments = (CurDir() & "\Upper\UpperLimb" & txtID.Text & ".png")

    es muy probable que CurDir() o  txtID.Text  te este retornando un valor con espacios, lo que deberias de hacer es encapsular el argumento en comillas dobles, Lo  que pasa que el espacio determina la separacion de argumentos, entonces para asgurarnos que le estamos enviando un solo argumento lo encapsulamos con comillas dobles

    startInfo.Arguments = """" + (CurDir() & "\Upper\UpperLimb" & txtID.Text & ".png") + """"

    Saludos

    Giancarlo Rolando Huarcaya Martinez

     


    Giancarlo Facebook: giancarlo.huarcaya
    miércoles, 2 de noviembre de 2011 17:23
  • excelente gcAqp me funciono correctamente, ahora tengo el siguiente problema. mi programa consta de lo siguiente: un picturebox, dos radiobuttons y un btn. el usuario elije alguno de los dos radio y el picture carga la imagen del usuario correspondiente (a traves del txtID.text....) y si presiona el button abre la imagen carga en el picturebox en paint asi se puede editar la misma. cuando cierra el paint, los cambios deben guardarse, ahora bien como el picture box esta utilizando la iamgen al momento de guardar me salta el error de paint de infraccion de uso compartido. como arreglo este problema?
    miércoles, 2 de noviembre de 2011 18:11
  • Pues has lo siguiente, carga la imagen un StreamMemory y utiliza el metodo Image.FormStream para cargar la imagen PictureBox, de la siguiente manera

    PictureBox1.Image = Image.FromStream(GetStream("C:\Users\Public\Pictures\Sample Pictures\Desert.jpg"))
    
    Public Function GetStream(ByVal fileName) As Stream
            Using f = File.Open(fileName, FileMode.Open)
                Dim ms As New MemoryStream
                f.CopyTo(ms)
                ms.Position = 0
                ms.Flush()
                Return ms
            End Using
           
        End Function

    con esto logras que el recurso siempre este disponible

    Saludos,

    Giancarlo Rolando Huarcaya Martinez


    Giancarlo Facebook: giancarlo.huarcaya
    miércoles, 2 de noviembre de 2011 19:08