5 de enero de 2012

Imagenes VB.NET 3/5

Ahora va el código, primero haremos un form en VB a fin de ingresar información, como se dieron cuenta en la base de datos que creamos, hay cuatro campos, uno con nombre, otro de comentarios, uno para la ruta de la imagen y un id autonumerico.

ahora bien, se creara un form con un TextBox que corresponderá con el nombre de la imagen, luego añadimos un RichTextBox en el cual se introducen los comentarios y por ultimo añadimos un PictureBox para mostrar la imagen que se ha cargado.

mi diseño quedo así, luego al entender el código podrán crear lo que les venga en gana, pero para el fin de ingresar la imagen en mi caso es mas que suficiente, como recomendacion, a las propiedades del PictureBox modifiquen el Size Mode de la imagen a presentar a StrecthImage para que la imagen no importando el tamaño se ajuste a las dimensiones que tenga nuestro PictureBox


El Label3 lo utilizo para mostrar la ruta de la imagen, hay otras formas pero lo hice así para explicar mejor y poder ocultarlo en caso lo necesite, ahora, en el código utilizare OpenFileDialog, según MSDN:

El componente OpenFileDialog de los formularios Windows Forms es un cuadro de diálogo preconfigurado. Es el mismo cuadro de diálogo Abrir archivo que expone el sistema operativo de Windows, además el objeto stream es el archivo que se está abriendo, es un flujo binario.


Para el caso del código, el evento Button1_click se encarga de buscar y cargar la imagen en el PictureBox1, 
empieza buscando en el directorio C:
.InitialDirectory = "c:\"

ademas solo toma archivos de imagen
.Filter = "JPG(*.jpg)|*.jpg|PNG(*.png)|*.png|GIF(*.gif)|*.gif|Todos(*.Jpg, *.Png, *.Gif, *.Tiff, *.Jpeg, *.Bmp)|*.Jpg; *.Png; *.Gif; *.Tiff; *.Jpeg; *.Bmp"

en caso de no cumplir con esto aparecerá:
MessageBox.Show("Favor seleccione una imagen para cargar")


y el evento Button2_Click se encarga de guardar los datos en la base, nada nuevo así que aquí está el código:


Imports System.Data.SqlClient
Imports System.Data.Sql
Imports System.IO

Public Class Form1
    Dim myStream As Stream = Nothing
    Dim picture As Bitmap

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim abrir As New OpenFileDialog
        With abrir
            .InitialDirectory = "c:\"
            .Filter = "JPG(*.jpg)|*.jpg|PNG(*.png)|*.png|GIF(*.gif)|*.gif|Todos(*.Jpg, *.Png, *.Gif, *.Tiff, *.Jpeg, *.Bmp)|*.Jpg; *.Png; *.Gif; *.Tiff; *.Jpeg; *.Bmp"
            .Title = "pon la foto"
            .FilterIndex = 1
            .RestoreDirectory = True
        End With
        If (abrir.ShowDialog = DialogResult.OK) Then
            Try
                myStream = abrir.OpenFile()
                If (myStream IsNot Nothing) Then
                    Dim dir As String = abrir.FileName
                    Label4.Text = dir
                    picture = New Bitmap(dir)
                    With PictureBox1
                        .Image = picture
                        .SizeMode = PictureBoxSizeMode.StretchImage
                        .BorderStyle = BorderStyle.Fixed3D
                    End With
                End If
            Catch Ex As Exception
                MessageBox.Show("Favor seleccione una imagen para cargar")
                Label4.Text = ""
            Finally
                If (myStream IsNot Nothing) Then
                    myStream.Close()
                End If
            End Try
                End If
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim sqlaux As String
        sqlaux = "insert into img(nombre, comentarios, ruta) values ('" & TextBox2.Text & "','" & RichTextBox1.Text & "','" & Label4.Text & "')"
        Try
            cnn.Open()
            Dim oCommand As New SqlCommand(sqlaux, cnn)
            Dim lnResult As Integer
            lnResult = oCommand.ExecuteNonQuery()
            cnn.Close()
            MessageBox.Show("Recuerdo agregado exitosamente", "GMB")
            cnn.Close()
        Catch ex As Exception
            MessageBox.Show(ex.Message, "ha habido un problema")
        End Try
    End Sub
End Class