none
personalizar botones RRS feed

  • Pregunta

  • buenas noches

    quiero personalizar los botones del formulario  y encontre que puedo poner todas los botones en una sola imagen y con código (que por cierto no se cual es y lo que encontré no entendi nada) puedo asignarlos. conozco que eventos puedo agregar(clic, gotfocus y lostfocus)

    el problema es, como extraigo una parte de la imagen para poder ponerlo en el picturebox que corresponda, gracias de antemano por su ayuda


    Giancarlo

    miércoles, 29 de junio de 2016 7:53

Respuestas

  • Hola:
    Puedes usar el control llamado ToolStrip.
    Pones la propiedad Autosize=False y LayoutStyle=Flow.
    Añades imagenes con la propiedad Ítems, con Autosize=False y le asignas una imagen
    Te muestro un ejemplo (no he cambiado la imagen) y el codigo para usarlo

    Public Class Form1
        Private Sub ToolStrip1_ItemClicked(sender As Object, e As ToolStripItemClickedEventArgs) Handles ToolStrip1.ItemClicked
            lP_Botones(CType(e.ClickedItem, ToolStripItem).Text)
        End Sub
        Private Sub lP_Botones(ByVal vsMenuItemText As String)
            Select Case (vsMenuItemText)
                Case "ToolStripButton1"
                    MessageBox.Show("Boton 1")
                Case "ToolStripButton2"
                    MessageBox.Show("Boton 2")
                Case "ToolStripButton3"
                    MessageBox.Show("Boton 3")
                Case "ToolStripButton4"
                    MessageBox.Show("Boton 4")
                Case "ToolStripButton5"
                    MessageBox.Show("Boton 5")
                Case "ToolStripButton6"
                    MessageBox.Show("Boton 6")
                Case "ToolStripButton7"
                    MessageBox.Show("Boton 7")
                Case "ToolStripButton8"
                    MessageBox.Show("Boton 8")
                Case "ToolStripButton9"
                    MessageBox.Show("Boton 9")
                Case "ToolStripButton10"
                    MessageBox.Show("Boton 10")
                Case "ToolStripButton11"
                    MessageBox.Show("Boton 11")
                Case "ToolStripButton12"
                    MessageBox.Show("Boton 12")
                Case "ToolStripButton13"
                    MessageBox.Show("Boton 13")
                Case "ToolStripButton14"
                    MessageBox.Show("Boton 14")
                Case "ToolStripButton15"
                    MessageBox.Show("Boton 15")
                Case "ToolStripButton16"
                    MessageBox.Show("Boton 16")
            End Select
        End Sub

    End Class

    Un saludo desde Bilbo
    Carlos
    • Marcado como respuesta José De AlvaModerator viernes, 1 de julio de 2016 14:40
    • Desmarcado como respuesta gian2051 viernes, 1 de julio de 2016 15:07
    • Marcado como respuesta gian2051 sábado, 2 de julio de 2016 5:44
    miércoles, 29 de junio de 2016 10:56
  • Listo, despues de varias busquedas

    Dim imagen As New Bitmap(pButtons.Image)
    Dim rectOri = New Rectangle(29, 22, 27, 19) 'donde extraera
    Dim rectDest As New Rectangle(0, 0, 27, 19) 'donde guardara

    Dim bmpDest = New Bitmap(27, 21)
    Dim g As Graphics = Graphics.FromImage(bmpDest)
    g.DrawImage(imagen, rectDest, rectOri, GraphicsUnit.Pixel)
    btnMaximizar.Image = bmpDest


    Giancarlo

    • Marcado como respuesta gian2051 sábado, 2 de julio de 2016 5:44
    sábado, 2 de julio de 2016 5:44

Todas las respuestas

  • Hola:
    Puedes usar el control llamado ToolStrip.
    Pones la propiedad Autosize=False y LayoutStyle=Flow.
    Añades imagenes con la propiedad Ítems, con Autosize=False y le asignas una imagen
    Te muestro un ejemplo (no he cambiado la imagen) y el codigo para usarlo

    Public Class Form1
        Private Sub ToolStrip1_ItemClicked(sender As Object, e As ToolStripItemClickedEventArgs) Handles ToolStrip1.ItemClicked
            lP_Botones(CType(e.ClickedItem, ToolStripItem).Text)
        End Sub
        Private Sub lP_Botones(ByVal vsMenuItemText As String)
            Select Case (vsMenuItemText)
                Case "ToolStripButton1"
                    MessageBox.Show("Boton 1")
                Case "ToolStripButton2"
                    MessageBox.Show("Boton 2")
                Case "ToolStripButton3"
                    MessageBox.Show("Boton 3")
                Case "ToolStripButton4"
                    MessageBox.Show("Boton 4")
                Case "ToolStripButton5"
                    MessageBox.Show("Boton 5")
                Case "ToolStripButton6"
                    MessageBox.Show("Boton 6")
                Case "ToolStripButton7"
                    MessageBox.Show("Boton 7")
                Case "ToolStripButton8"
                    MessageBox.Show("Boton 8")
                Case "ToolStripButton9"
                    MessageBox.Show("Boton 9")
                Case "ToolStripButton10"
                    MessageBox.Show("Boton 10")
                Case "ToolStripButton11"
                    MessageBox.Show("Boton 11")
                Case "ToolStripButton12"
                    MessageBox.Show("Boton 12")
                Case "ToolStripButton13"
                    MessageBox.Show("Boton 13")
                Case "ToolStripButton14"
                    MessageBox.Show("Boton 14")
                Case "ToolStripButton15"
                    MessageBox.Show("Boton 15")
                Case "ToolStripButton16"
                    MessageBox.Show("Boton 16")
            End Select
        End Sub

    End Class

    Un saludo desde Bilbo
    Carlos
    • Marcado como respuesta José De AlvaModerator viernes, 1 de julio de 2016 14:40
    • Desmarcado como respuesta gian2051 viernes, 1 de julio de 2016 15:07
    • Marcado como respuesta gian2051 sábado, 2 de julio de 2016 5:44
    miércoles, 29 de junio de 2016 10:56
  • buenas noches, suena interesante y de hecho es bastante facil como lo dices. el punto es que tengo bastante curiosidad sobre como hacer de la manera en que lo planteo (no se si será la mas adecuada, pero creo que conocerlo es una manera de aprender)

    estuve haciendo mi tarea,  e investigando y bueno me saió esto dentro del event paint del formulario o controluser:

    Dim imagen As New Bitmap(pButtons.Image)
    Dim destino As New RectangleF(0, 0, 25, 21)
    Dim origen As New RectangleF(1, 0, 29, 20)
    e.Graphics.DrawImage(imagen, destino, origen, GraphicsUnit.Pixel)

    el problema es que me lo dibuja dentro del formulario y no dentro de un picturebox, y si quiero llamarlo despues sobre el evento gotfocus de un picturebox no me lo permite. creo que si transformo o veo como poner una variable graphics como imagen del icture box saldría, pero no se como hacerlo

    Dim g As Graphics = Nothing
    g.DrawImage(imagen, destino, origen, GraphicsUnit.Pixel)
    ¿¿¿picturebox1.image=g??? no sale



    Giancarlo

    jueves, 30 de junio de 2016 6:11
  • Listo, despues de varias busquedas

    Dim imagen As New Bitmap(pButtons.Image)
    Dim rectOri = New Rectangle(29, 22, 27, 19) 'donde extraera
    Dim rectDest As New Rectangle(0, 0, 27, 19) 'donde guardara

    Dim bmpDest = New Bitmap(27, 21)
    Dim g As Graphics = Graphics.FromImage(bmpDest)
    g.DrawImage(imagen, rectDest, rectOri, GraphicsUnit.Pixel)
    btnMaximizar.Image = bmpDest


    Giancarlo

    • Marcado como respuesta gian2051 sábado, 2 de julio de 2016 5:44
    sábado, 2 de julio de 2016 5:44