Portal    Foro    Buscar    FAQ    Registrarse    Conectarse

¿como Capturar Una Zona En Un Drawingarea, Y Guardarla En Un Archivo De Imagen .png? (solucionado)

¿como Capturar Una Zona En Un Drawingarea, Y Guardarla En Un Archivo De Imagen .png? (solucionado)
Artículo
Responder citando    Descargar mensaje  
Mensaje ¿como Capturar Una Zona En Un Drawingarea, Y Guardarla En Un Archivo De Imagen .png? (solucionado) 
 
¿Sabeis alguna forma de capturar una zona de un dibujo realizado dentro del control drawingarea?



 
última edición por jsbsan el Miercoles, 15 May 2013, 21:00; editado 1 vez 
jsbsan - Ver perfil del usuario Enviar mensaje privado  
jsbsan [ Miercoles, 17 Abril 2013, 18:49 ]
 


¿como Capturar Una Zona En Un Drawingarea, Y Guardarla En Un Archivo De Imagen .png? (solucionado)
Comentarios
Responder citando    Descargar mensaje  
Mensaje Re: ¿como Capturar Una Zona En Un Drawingarea, Y Guardarla En Un Archivo De Imagen .png? 
 
Hola

Hay dos formas, la primera es la chapucera y consiste en usar la función .Grab() del control. Pero no creo que sea la mejor, porque guarda todo lo que haya en las coordenadas del control, incluyendo ventanas que pudieras tener encima.

La segunda, y creo que la única, es crear una función que vuelva a dibujar el drawingarea sobre un objeto Image y hagas .Clip en en trozo de imagen que desees guardar. Eso no es más que obtener unas coordenadas relativas a las dimensiones de la imagen para "recortar" ese trozo. Después grabas a un fichero y listo.

Te dejo un código que hice en mi programa hace tiempo con gambas2, que creo que puede servir para entender mejor el asunto.

 https://dfhlog.googlecode.com/svn/branches/dfhlog1.1/FLoc.class

Abajo del todo, la función savePic prepara la imagen para guardarla. Hay que volver a dibujar todo, eso está claro, pero si usas el evento Draw y divides el código en funciones que realicen los cálculos y los dibujos, luego sólo tienes que llamarlas desde donde quieras. Lo que sí es cierto es que en la función de guardado no se ha usado el evento Draw, porque no estoy dibujando en el drawingarea, sino en un objeto picture.

En el ejemplo que te he puesto, el drawing area está dentro de un control scrollviev, porque la imagen era muy grande, y realmente se dibuja sólo la parte visible. Hay dos métodos que usan la función, uno para guardar la parte visible de la imagen, delimitada por las dimensiones actuales del scrollview y otra que guarda la imagen entera. Es el argumento "whole" que le paso a la función.

En fin, mira el código a ver si te sirve...

Saludos



 
jguardon - Ver perfil del usuario Enviar mensaje privado  
jguardon [ Miercoles, 17 Abril 2013, 19:18 ]
Responder citando    Descargar mensaje  
Mensaje Re: ¿como Capturar Una Zona En Un Drawingarea, Y Guardarla En Un Archivo De Imagen .png? 
 
Gracias, me ha servido!!!  



 
jsbsan - Ver perfil del usuario Enviar mensaje privado  
jsbsan [ Miercoles, 17 Abril 2013, 21:34 ]
Mostrar mensajes anteriores:    
 
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


 



 

cron