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


Objetivo: ¿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
Objetivo: 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

Perfil MP  
Objetivo: Re: ¿como Capturar Una Zona En Un Drawingarea, Y Guardarla En Un Archivo De Imagen .png?
Gracias, me ha servido!!!


Página 1 de 1


  
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

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.1635s (PHP: -54% SQL: 154%)
Consultas SQL: 29 - Debug off - GZIP Activado