none
Condición If no me responde en vb 2017 RRS feed

  • Pregunta

  • buenas tardes compañero , tengo una función para comparar dos imágenes que encontré en este foro y pues me funciona el problema es el siguiente, en el botón guardar hago la validación que dicha imagen sean iguales advierta al usuario que no se ha agregado imagen al registro y caso contrario pues que deje continuar....la función me funciona por que me detecta cuando el usuario no ha puesto una imagen para el registro , pero en el caso de que si le asigna una imagen ahí me hecha a perder todo el código en ese foto por que me queda como si no tuviera ningún codo dentro de el ..no me responde , les dejare la función mas el código que tengo en el botón guardar ..gracias de ante manos..

    la función es la siguiente:

     Public Function CompareBitmaps(img1 As Bitmap, img2 As Bitmap) As Boolean
    
            If ((img1 Is Nothing) OrElse
                (img2 Is Nothing)) Then Return False
            ' Comprobar si el tamaño de las imágenes son iguales.
            Dim equal As Boolean = img1.Size.Equals(img2.Size)
            If (Not equal) Then Return False
    
            ' Los tamaños de las dos imágenes son iguales.
            '
            ' Recorrer los píxeles para verificar que
            ' sus colores son iguales en ambas imágenes.
            '
            For x As Integer = 0 To img1.Width - 1
    
                For y As Integer = 0 To img1.Height - 1
    
                    Dim color1 As Color = img1.GetPixel(x, y)
                    Dim color2 As Color = img2.GetPixel(x, y)
    
                    If (Not color1.Equals(color2)) Then
                        equal = False
                        Exit For
                    End If
    
                Next
    
                If (Not equal) Then Exit For
    
            Next
    
            Return equal
    
        End Function

    el código dentro del botón es:

     Dim bmp1 As Bitmap = DirectCast(pbfoto.Image, Bitmap)
                        Dim bmp2 As Bitmap = DirectCast(pbfoto2.Image, Bitmap)
                        Dim bln As Boolean = CompareBitmaps(bmp1, bmp2)
                        If (bln) Then
                            If (MessageBox.Show("No se ha seleccionado ninguna imagen para este empleado" & vbCrLf & "Desea continuar", "Confirmación", MessageBoxButtons.YesNo)) = DialogResult.No Then
                                Return
                            Else
                                If Me.txtnombres.Text = "" Or Me.txtapellidos.Text = "" Or Me.txtsexo.Text = "" Or Me.txtcedula.Text = "" Or Me.txtfechaNacimiento.Text = "" Or Me.txtdireccion.Text = "" Or Me.txtcelular.Text = "" Or Me.txtfechaContrato.Text = "" Or Me.txtusuario.Text = "" Or Me.txtcontraseña.Text = "" Or Me.txtrol.Text = "" Then
                                    MsgBox("Revise Campos Vavios Porfavor", MsgBoxStyle.Exclamation, "Econtrol")
                                    Call MostrarSi()
                                    Me.txtnombres.Focus()
                                    Return
                                Else
                                    NUMEROCEDULA = recuperar_dato("SELECT COUNT(cedula) as Total from dbo.Empleados where cedula='" & Me.txtcedula.Text & "'")
                                    If NUMEROCEDULA > 0 Then
                                        MsgBox("Ya existe un empleado registrado con este numero de cedula, por favor verifique y vuelva a intentarlo", MsgBoxStyle.Exclamation, "Econtrol")
                                        Return
                                    ElseIf NUMEROCEDULA = 0 Then
                                        Call AgregarEmpleado()
                                        Call AgregarUsuario()
                                        ejecutarConsulta("update indice set contador = contador + 1 where id=1")
                                        Call ObtenerEmpleadoId()
                                        Call MostrarNo()
                                        Call ClearControles()
                                        Call CleanPictureBox()
                                        Call CargarListaEmpleados()
                                        Me.txtestado.Text = "Activo"
                                        Me.txtnombres.Focus()
                                    End If
                                End If
                            End If
                        End If

    eso es todo...

    viernes, 9 de noviembre de 2018 22:05

Todas las respuestas

  • Lo único que haría diferente (aun cuando parezca ilógico) es que el If boleano lo compararía directamente con un valor, me ha pasado que aun cuando la documentación dice que ese if te debe regresar true o false a mi en lo personal me ha fallado:

     If bln = True Then
         .
         .
         .
     Endif

    Prueba y si te funciona marca como respuesta

    Saludos

    sábado, 10 de noviembre de 2018 19:31
  • hola

    >>pero en el caso de que si le asigna una imagen ahí me hecha a perder todo el código en ese foto por que me queda como si no tuviera ningún codo dentro de el ..no me responde

    pero porque dices que el if es el que no responde? una cosa es que se quede como congelada la ejecucion porque el proceso es pesado en la comparacion de una imagen y otra que una instruccion en concreto tenga un problema, son cosas muy distintas

    ademas esa no es la forma correcta de comparar imagenes, para eso existe el hash

    Calculating an MD5 Hash in VB.net

    sacas el hash de ambas imagenes si coinciden son la misma imagen, es la forma mas rapida y simple

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    sábado, 10 de noviembre de 2018 23:15
  • Si ya la había probado, no me resulto.
    lunes, 12 de noviembre de 2018 14:46