Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Como exportar..... ?????

Estas en el tema de Como exportar..... ????? en el foro de Visual Basic clásico en Foros del Web. buenos dias estimados foristas : Tengo una pequeña consulta... en mi formulario se encuentra una imágen dentro de un imagebox que me sirve para graficar ...
  #1 (permalink)  
Antiguo 29/12/2009, 08:15
 
Fecha de Ingreso: septiembre-2009
Ubicación: Venezuela
Mensajes: 92
Antigüedad: 14 años, 8 meses
Puntos: 1
Pregunta Como exportar..... ?????

buenos dias estimados foristas :

Tengo una pequeña consulta... en mi formulario se encuentra una imágen dentro de un imagebox que me sirve para graficar resultados... por ejemplo... tengo 2 valores... uno para el eje de las x y otro para el eje de las y.... ubico mi resultado con un label sobre la imágen y listo... ahora bien.... como puedo hacer para exportar ese imagebox con los label ??? no importa si lo exporto a jpg o excel o lo que sea... lo quiero exportar de manera tal que luego lo pueda pegar en un informe.....

Espero haber sido un poco claro jejejeje

saludos !!!!
  #2 (permalink)  
Antiguo 29/12/2009, 11:28
Avatar de wansoft  
Fecha de Ingreso: mayo-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 81
Antigüedad: 18 años
Puntos: 1
Respuesta: Como exportar..... ?????

Imagebox es un control de usuario o ActiveX ? O bien te refieres a un control PictureBox, o tal vez el control Image ?

En el caso de que estés usando controles comunes ( Picturebox o Image ), aqui tienes un tutorial interesante para usar el método SavePicture, con eso podrás guardar ( Exportar o como le llames ) la imagen a un archivo BMP.

http://www.recursosvisualbasic.com.a...do-grafico.htm



Espero que te sirva.
  #3 (permalink)  
Antiguo 29/12/2009, 22:21
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 9 meses
Puntos: 29
Respuesta: Como exportar..... ?????

No se si se puede escribir texto sobre un control image. De todas formas he preparado una sub que debería solucionar tu problema.
Me ha costado pero al final lo he logrado. El tema era dejarte usar tu control image para que no tengas que cambiar nada, ya que imagino que usas un image para que se adapte la imagen cargada al tamaño del control, cosa que no hace el picturebox.

Aunque parezca complicado es facil de usar.

Código vb:
Ver original
  1. Sub EscribeEnControlImage(ByRef ControlImage As Image, _
  2. ByVal PosX As Long, ByVal PosY As Long, ByVal Texto As String, _
  3. Optional ByVal ColorTexto As ColorConstants = vbWhite, _
  4. Optional ByVal ColorFondo As ColorConstants = vbBlack, _
  5. Optional ByVal TamanioTexto As Currency = 8.25, _
  6. Optional ByVal FuenteTexto As String = "MS Sans Serif")
  7.  
  8.   Dim PicTemp1 As VB.PictureBox
  9.   Dim PicTemp2 As VB.PictureBox
  10.  
  11.   Set PicTemp1 = Controls.Add("VB.PictureBox", "PicTemp1EscribeEnControlImage", ControlImage.Container)
  12.   Set PicTemp2 = Controls.Add("VB.PictureBox", "PicTemp2EscribeEnControlImage", ControlImage.Container)
  13.   PicTemp2.Height = ControlImage.Height
  14.   PicTemp2.Width = ControlImage.Width
  15.   PicTemp1.Picture = ControlImage.Picture
  16.   PicTemp1.AutoSize = True
  17.   PicTemp2.AutoRedraw = True
  18.  
  19.   ' COLORFONDO = -1 DEJA EL FONDO TRANSPARENTE Y SOLO MUESTRA EL TEXTO
  20.  If ColorFondo <> -1 Then
  21.     PicTemp2.FontTransparent = False
  22.     PicTemp2.BackColor = ColorFondo
  23.   End If
  24.  
  25.   PicTemp2.PaintPicture PicTemp1.Picture, 0, 0, PicTemp2.ScaleWidth, PicTemp2.ScaleHeight, _
  26.   0, 0, PicTemp1.ScaleWidth, PicTemp1.ScaleHeight
  27.   Controls.Remove ("PicTemp1EscribeEnControlImage")
  28.   PicTemp2.ForeColor = ColorTexto
  29.   PicTemp2.CurrentX = PosX
  30.   PicTemp2.CurrentY = PosY
  31.   PicTemp2.Font.Size = TamanioTexto
  32.   PicTemp2.Font.Name = FuenteTexto
  33.   PicTemp2.Print Texto
  34.   Set ControlImage.Picture = PicTemp2.Image
  35.   Controls.Remove "PicTemp2EscribeEnControlImage"
  36. End Sub
Imaginando que tu control image se llama "Image1" y que tienes ya colocado sobre él un label llamado "Label1".
Esta línea básica debería pintar el label en el control image con el mismo tamaño y color de letra y color de fondo del label.


Código vb:
Ver original
  1. Private Sub Command1_Click()
  2.   EscribeEnControlImage Image1, _
  3.   Label1.Left - Image1.Left, Label1.Top - Image1.Top, _
  4.   Label1.Caption, _
  5.   Label1.ForeColor, Label1.BackColor, _
  6.   Label1.FontSize, _
  7.   Label1.FontName
  8. End Sub

En mis pruebas el label dibujado quedaba un poco desplazado de posición, pero eso ajustalo tu como quieras, calculando el margen de error o metiendo las coordenadas exactas a mano.

La sub pasa la imagen a un picturebox, escribe el texto y devuelve la imagen al control image.

Lo malo es que el picturebox no tiene propiedad stretch y he tenido que "stretcharlo" yo mismo, ya que si no las coordenadas no coinciden y la imagen devuelta tiene el tamaño original y el texto descolocado.

Lo que más me ha costado ha sido aprender lo básico para crear y eliminar pictureboxes en tiempo de ejecución sin hacerte añadir al menos uno para usar de matriz.

Saludos
__________________
No hay preguntas tontas, solo gente estup..., ¡No!, ¿como era? No hay gente que pregunte a tontos... ¡Nooo!... ¡Vaya cabeza!

Última edición por pkj; 30/12/2009 a las 01:15 Razón: Añadir opcional "Fuente del texto" y renombrar variables para evitar conflictos
  #4 (permalink)  
Antiguo 30/12/2009, 06:39
 
Fecha de Ingreso: septiembre-2009
Ubicación: Venezuela
Mensajes: 92
Antigüedad: 14 años, 8 meses
Puntos: 1
Respuesta: Como exportar..... ?????

Buenos dias estimados amigos foristas :

Lo que tengo es un control image.... Ahora bien, supongamos que en el eje x tengo un valor de 4 y en el eje de las y un valor de 5.... Para ubicar ese resultado en el eje de coordenadas yo coloco un control label y lo marco........

Excelente respuesta amigo... Voy a probarlo ahorita en mi form y cualquier pregunto de nuevo !!!!

Feliz dia !!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:16.