canal visual basic .net

Recursos Visual Basic.NET, VB.NET, Manuales de programación, Tutoriales, Foros de programación, Comunidad de programadores

Usuarios activos:  52

Foros de programación, recursos, tutoriales, sistemas operativos...

Bienvenido a la zona de foros. Participa en alguno de nuestros foros: Foros de visual basic, foros de visual basic.net foros de Crystal reports, programas gratis, foros de C++ - C# , foros de Java, foros de PHP, foros de ASP.net. Seguro que hay un foro que te servirá de gran utilidad y si no lo encuentras avísanos y crearemos uno nuevo.
Resultados 1 al 6 de 6
  1. #1
    Vanchi está desconectado Moderador Veteran@
    Fecha de ingreso
    09 dic, 05
    Mensajes
    740

    Predeterminado

    Güenas,

    Tengo un control que grafica. Lo que quiero es que ese gráfico quede guardado en la imagen de un botón... y la verdad es que no tengo la más remota idea de cómo hacerlo.

    Probé poner en el control esta función.

    Código:
    Public Function GetPicture()
    GetPicture = picVis.Picture
    End Function
    (Lo que está DIBUJADO en picVis es lo que quiero copiar como imagen del botón)

    y luego llamo:
    Código:
    picTmp.Picture = Ctrl3D.GetPicture
    He probado cambiando las propiedades Picture por Image... También probé utilizar la propiedad PaintPicture, pero todavía no logro dar en la clave... ¿Me ayudan?

    Saludos

    Iván (Vanchi) La Malfa
    OpenOffice.org
    .Free as in Freedom.

  2. #2
    pablogener está desconectado Member Iniciad@
    Fecha de ingreso
    14 jun, 07
    Mensajes
    38

    Predeterminado


    Para saber si un control u objeto tiene una propiedad o un metodo especifico, fijate en el "Explorador de objetos" (presiona F2 para mostrar el explorador de objetos). En la busqueda, ingresa el nombre del control, y al seleccionar su tipo de control u objeto de la lista de resultado, veras una lista de todos los metodos, propiedades y eventos que le corresponden. Asi, por ejemplo, en cualquier objeto de tipo PictureBox NO vas a tener una propiedad '.Image' pero SI vas a tener una propiedad '.Picture'. Es decir, esto te srive para saber con seguridad que propiedades, metodos y eventos maneja cada control.
    Luego, para pasar el grafico de 'Picture1' a 'Command1'...

    Código:
    'Asegurate de que el boton acepta mostrar graficos
    Command1.Style = vbGraphical
    Command1.Caption = ""
    
    'Asigna el grafico
    Command1.Picture = Picture1.Picture
    Los botones aceptan en la propiedad '.Picture', datos 'de imagen' de tipo IPictureDisplay, que es el mismo formato de datos 'de imagen' de los controles PictureBox.


    Es decir, en la clase 'CommandButton', tenés:
    Command1.Picture As IPictureDisplay

    y en la clase 'PictureBox', tenés:
    Picture1.Picture As IPictureDisplay

    Como verás, ambos controles tienen el mismo tipo de datos para 'leer/mostrar imagenes'.
    Es algo similar a lo que sucede con los labels y los textboxs:

    Label1.Caption As String
    Text1.Text As String

    (son compatibles!!)


    Saludos.
    Pablo Gener.


    Edited by: pablogener

  3. #3
    Avatar de Leandro
    Leandro está desconectado Moderador Veteran@
    Fecha de ingreso
    08 dic, 05
    Mensajes
    543

    Predeterminado

    hola el control Ctrl3D es un picturebox?? bien si es asi podes usar aglo masomenos asi (pero queda vastante feo)

    obiamente el picture deve tener en tiempo de diceño
    Command1.Style = vbGraphical
    Código:
    Private Sub Command1_Click()
    Dim pic As StdPicture
    
    Set pic = Picture1.Image
    Picture1.Cls
    Picture1.Move 0, 0, 2000, 1000
    Picture1.PaintPicture pic, 0, 0, 2000, 1000
    Picture1.Refresh
    Command1.Picture = Picture1.Image
    End Sub
    
    Private Sub Form_Load()
    Picture1.Move 0, 0, 5000, 3000
    Command1.Move 0, 3000, 2000, 1000
    
    Picture1.AutoRedraw = True
    For i = 0 To 50
     Picture1.Circle (Rnd(10000) * 5000, Rnd(10000) * 2000), Rnd(5000) * 200, RGB(Rnd(i) * 500, Rnd(i) * 500, Rnd(i) * 500)
    Next
    Picture1.Refresh
    
    
    End Sub
    ahora si este control no es un picturebox y no tiene las propiedades picture o image verifica si porlomenos tiene hdc entonses con el hdc pueds sacar su imagen con el api StretchBlt , lo cual deves pintarlo en un picturebox redimencionandolo al tamaño del del commandbutton (porque sino, no se veria la imagen, osea la imagen no deve ser muy grande), de no tener hdc puedes capturar el area del control e transformarlo en imagen, yo no recuerdo bien como era esto , pero me lo havia pasado Luciano el seguramente se deve acordar

    Saludos


  4. #4
    Semper está desconectado Senior Member Avanzad@
    Fecha de ingreso
    24 sep, 06
    Ubicación
    Mexico
    Mensajes
    147

    Predeterminado

    A ver Vanchi.. Prueba este codigo ...

    El boton (Command1) debetener estilo Grafico, y obviamente una altura y anchurasuficiente para que al pintar la imagen completa (haciendo una especie de ZOOM a la inversa) , esta no se pierda parcialmente ...

    '''''''
    Private Sub Command1_Click()
    Dim oPicBox As PictureBox

    Me.Picture1.AutoRedraw = True
    Me.Picture1.Picture = Me.Picture1.Image

    Set oPicBox = Me.Controls.Add("VB.PictureBox", "oPicBox1", Me)

    oPicBox.AutoRedraw = True
    oPicBox.Width = Me.Command1.Width
    oPicBox.Height = Me.Command1.Height
    oPicBox.ScaleMode = Me.Picture1.ScaleMode
    oPicBox.ScaleHeight = Me.Picture1.ScaleHeight
    oPicBox.ScaleWidth = Me.Picture1.ScaleWidth

    oPicBox.PaintPicture Me.Picture1.Picture, 0, 0, _
    oPicBox.ScaleWidth, oPicBox.ScaleHeight

    Me.Command1.Picture = oPicBox.Image

    Set oPicBox = Nothing
    Me.Controls.Remove "oPicBox1"

    End Sub

    '''''''

    Saludos ...

  5. #5
    Luciano está desconectado Senior Member Guru
    Fecha de ingreso
    07 dic, 05
    Mensajes
    1,122

    Predeterminado

    Siguiendo el ejemplo de Semper, para dibujar tal cual la imagen (con el mismo ancho y alto)

    .. una forma

    Código:
    Private Sub Command1_Click()
     Dim oPicBox As PictureBox
     
     Set oPicBox = Me.Controls.Add("VB.PictureBox", "oPicBox1", Me)
     
     With Picture1
     .AutoRedraw = True
     .AutoSize = True
     .Picture = Me.Picture1.Image
     .BorderStyle = 0
     End With
     
     With oPicBox
     .AutoRedraw = True
     .Move 0, 0, Me.Picture1.ScaleWidth, Me.Picture1.ScaleHeight
     .BorderStyle = 0
     .AutoRedraw = True
     .ScaleMode = Picture1.ScaleMode
     .Visible = True ' quitar
     End With
     
     oPicBox.PaintPicture Me.Picture1.Picture, 0, 0, _
     oPicBox.ScaleWidth, oPicBox.ScaleHeight
     
     With Command1
     .Picture = oPicBox.Image
     .Width = oPicBox.Width
     .Height = oPicBox.Height
     End With
     
     
     
     ' Set oPicBox = Nothing
     ' Me.Controls.Remove "oPicBox1"
     
    End Sub
    
    Private Sub Form_Load()
     Picture1 = LoadPicture("C:\Archivos de programa\Microsoft Visual Studio\Common\Graphics\Bitmaps\Assorted\SMOKES.BMP")
    End Sub

  6. #6
    Vanchi está desconectado Moderador Veteran@
    Fecha de ingreso
    09 dic, 05
    Mensajes
    740

    Predeterminado

    Gente...

    Muchísimas gracias por toda la ayuda recibida.

    El problema que tenía era que no lograba pasar "image" o "picture" del control al form.

    Lo resolví usando:
    Código:
    Public Function GetPicture() As IPictureDisp '<- Gracias Pablo Gerer
    Set GetPicture = picVis.Image
    End Function
    ¡¡¡MALDITO SET!!!. Me había olvidado y no entedia por que carajos el VB me decía que no estaba la propiedad with establecida.

    Bueno, con esto tengo resuelto la primera parte que era la de pasar la imagen del picturebox que hay en el control al form donde está el control.

    Ahora me queda la segunda parte que es ajustar la imagen al pequeño tamaño del botón... pero para eso tengo ejemplos en este mismo hilo de Leandro, Sempler y Luciano por lo que no debería tener problemas.

    Bueno, MUCHÍSIMAS GRACIAS a todos y nos vemos.

    Iván (Vanchi) La Malfa
    OpenOffice.org
    .Free as in Freedom.

Temas similares

  1. Popup Menu en Boton, Ocultarlo al salir del boton
    Por Tino en el foro Visual Basic 6.0
    Respuestas: 3
    Último mensaje: 13/04/2009, 11:02
  2. al pulsar botón ¿el foco pasa al botón?
    Por black_flowers en el foro Visual Basic .NET
    Respuestas: 2
    Último mensaje: 01/05/2007, 12:43
  3. Establecer la escala de un gráfico
    Por Vanchi en el foro Visual Basic .NET
    Respuestas: 3
    Último mensaje: 25/01/2007, 05:24
  4. ayuda con un grafico
    Por GODSWIND en el foro Visual Basic 6.0
    Respuestas: 1
    Último mensaje: 21/11/2006, 11:59
  5. Grafico de Barras
    Por Guests en el foro Visual Basic 6.0
    Respuestas: 1
    Último mensaje: 19/07/2006, 16:20

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •  
Visual Studio .VisualBasic.net .ADO.NET .ASP.NET .Framework .Crystal report
[Visual Basic .NET · Información legal · Condiciones de uso · Publicidad · Contacto · RSS novedades Foro · Inicio]
Un sitio web de Internelia (Ontecnia) © Copyright 2013 canalvisualbasic.net. Todos los derechos reservados