Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Guardar El Contenido De Un DrawingArea
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Guardar El Contenido De Un DrawingArea 
 
Hola, este programita hace un marco de pequeñas imágenes alrededor de una imagen tomada como fondo, pero no sé cómo guardar el resultado dibujado en el drawingarea.

¿Alguna idea?


Gracias de antemano.

marquitos-0.0.2.tar.gz
Descripción:  
Descargar
Nombre del archivo: marquitos-0.0.2.tar.gz
Tamaño: 143 KB
Descargado: 23 veces
marquitos-0.0.2.tar.gz
Descripción:  
Descargar
Nombre del archivo: marquitos-0.0.2.tar.gz
Tamaño: 143 KB
Descargado: 23 veces
marquitos-0.0.2.tar.gz
Descripción:  
Descargar
Nombre del archivo: marquitos-0.0.2.tar.gz
Tamaño: 143 KB
Descargado: 23 veces

 



 
guadafan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Guardar El Contenido De Un DrawingArea 
 
Hola guadafan:

Citar:
no sé cómo guardar el resultado dibujado en el drawingarea.

Hay dos métodos para hacerlo (que yo sepa):

1) Directo: Usando desktop.screenshot(), que es como una captura de pantalla.
  Dim p As Picture
  p = Desktop.Screenshot(Me.x , Me.y , Me.w, Me.h)
  p.Save(User.home & "/resultado.png")


2) Indirecto:
Todo lo que tengas que dibujar en el drawingarea, lo dibujas en un objeto "image", y lo guardas.
Para ampliar el código que nos has pasado, seria asi:
a) Todo lo que tienes definido en DrawingArea1_Draw(), lo pasas a una nueva subrutina "dibuja()".
Y desde DrawingArea1_Draw() , llamas dibuja(). Esto lo hago para que puedas reusar el código...
b) Creas un botón o defines algun evento del DrawingArea1, para llamar a una nueva subrutina.
Esta subrutina, se encarga de cargar la imagen, crear una imagen "transparente", con las dimensiones que tenga la imagen de fondo, y usarla como "device" (dispositivo) donde dibujará.
Public Sub ButtonImprimir_Click()
  
  Dim itmp As New Image 'imagen temporal para conocer tamaño
  Dim i As New Image 'imagen donde vamos a pintar
  
  Itmp = image.Load("fondo.jpg")
  
  i = image.Load("transparencia.png") 'imagen trasparente pequeña
  i = i.Stretch(itmp.w, itmp.h) 'redimensiona la imagen transparente, para que tenga el mismo tamaño que el "fondo.jpg"
  Paint.Begin(i) 'el dispositivo (device) donde va a dibujar es el objeto i
  dibuja() 'hace todo el dibujo
  Paint.Stroke 'lo termina de dibujar
  Paint.End
  'guardamos el resultado....
  i.Save(User.Home & "/resultado.png")
  Message.Info("Guardada en..." & User.home & "/resultado.png")

End
 


El resultado seria este:
 resultado

marquitos-0.0.3.tar.gz
Descripción: Añadiendo boton para que guarde el dibujo generado 
Descargar
Nombre del archivo: marquitos-0.0.3.tar.gz
Tamaño: 143.47 KB
Descargado: 28 veces
marquitos-0.0.3.tar.gz
Descripción: Añadiendo boton para que guarde el dibujo generado 
Descargar
Nombre del archivo: marquitos-0.0.3.tar.gz
Tamaño: 143.47 KB
Descargado: 28 veces
marquitos-0.0.3.tar.gz
Descripción: Añadiendo boton para que guarde el dibujo generado 
Descargar
Nombre del archivo: marquitos-0.0.3.tar.gz
Tamaño: 143.47 KB
Descargado: 28 veces

 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Guardar El Contenido De Un DrawingArea 
 
Gracias Julio.
 



 
guadafan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Guardar El Contenido De Un DrawingArea 
 
Creí que le había pillado ya el truco al drawingarea, pero no. En el mismo programa de antes he añadido otro drawingarea más pequeño. La idea es apartar de la vista el drawingarea que trabaja con las resoluciones reales y plasmar en otro drawingarea un preview de lo que saque aquél.
Entonces, he añadido un botón para que tome la imagen guardada y la muestre escalada.

Public Sub BotonPreview_Click()
  
  Dim iPreview As Image
  Dim Brocha As PaintBrush
  
  iPreview = image.Load("/tmp/resultado.png")                       'Cargo la imagen
  Brocha = Paint.Image(iPreview)                                    'Relleno la brocha con la imagen
  Brocha.Scale(DrawingPreview.W / Imagen.w, DrawingPreview.H / Imagen.h)    'Escalo la brocha
  Paint.Brush = Brocha                                              'Preparo la brocha
  Paint.Rectangle(DrawingPreview.X, DrawingPreview.Y, DrawingPreview.W, DrawingPreview.H) 'Defino dónde se va a plantar lo que tenga la brocha
  Paint.Fill                                                              'Pinto
  
End
 


Pues no sé por qué me larga un "no current device".  

También estoy jugando con un picturebox, pero no llego a ninguna parte tampoco.

Adjunto. (Enlazo a gdrive porque el foro no me deja subir más de 150Kb)
 



 
guadafan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Guardar El Contenido De Un DrawingArea 
 
Vale ya he visto tu error. No estas indicando en que dispositivo (el "device") quieres que se dibuje.

Para dibujar tienes dos opciones:
1) Usar Paint.begin( device ), dibujas lo que quieras  y luego Paint.End para que se dibuje.

2) Usar el evento _draw() del device (en los casos que sea un drawingarea).

De la 2º manera se resolveria, asi:

Public Sub BotonPreview_Click()
  
  DrawingPreview.Refresh()
  
End

Public Sub DrawingPreview_Draw()
  
  dibujaPrevisualizacion()
  
End

Public Sub dibujaPrevisualizacion()
  
  Dim iPreview As Image
  Dim Brocha As PaintBrush
  
  iPreview = image.Load("/tmp/resultado.png")                       'Cargo la imagen
  Brocha = Paint.Image(iPreview)                                    'Relleno la brocha con la imagen
  Brocha.Scale(DrawingPreview.W / Imagen.w, DrawingPreview.H / Imagen.h)    'Escalo la brocha
  Paint.Brush = Brocha                                              'Preparo la brocha
  Paint.Rectangle(0, 0, DrawingPreview.W, DrawingPreview.H) 'Defino dónde se va a plantar lo que tenga la brocha
  Paint.Fill                                                              'Pinto
  
End


Enlace de descarga de marquitos 0.0.6:Enlace
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
última edición por jsbsan el Lunes, 28 Julio 2014, 15:47; editado 2 veces 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Guardar El Contenido De Un DrawingArea 
 
Señalo una otra manera para guardar lo que es dibujado en la DrawingArea:

http://www.gambas-it.org/wiki/index...una_DrawingArea
(texto en italiano !)
 



 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Contenido De Textbox En Base De Datos techm3 Bases de Datos 3 Miercoles, 14 Abril 2010, 03:09 Ver último mensaje
chen_08
No hay nuevos mensajes Mostrar Contenido De Ejecucion cyberx0x General 2 Viernes, 01 Julio 2011, 15:26 Ver último mensaje
cyberx0x
No hay nuevos mensajes Obtener El Contenido De Una Columna De Un ... desoljor Aplicaciones/Fragmentos de Código 3 Martes, 26 Enero 2016, 01:52 Ver último mensaje
vuott
No hay nuevos mensajes Hacer Que Se Expanda Contenido De Fmain. portaro Aplicaciones/Fragmentos de Código 9 Jueves, 22 Agosto 2019, 00:19 Ver último mensaje
portaro
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron