Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Problema Con El Refresco De Un PictureBox (Solucionado)
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Problema Con El Refresco De Un PictureBox (Solucionado) 
 
Saludos:
Tengo un PictureBox que carga una imagen de un fichero. Hasta ahí guay.
Como no me gusta eso de la propiedad Stretch, que no respeta las propiedades de la imagen y la deforma, pues utilizo una herramienta externa para redimensionarla cada vez que el contenedor reubica sus controles (evento Arrange).

El código, simplificado, es el siguiente:

PUBLIC SUB Panel1_Arrange()

    DIM r AS Result
    DIM lafoto AS String
    
    IF ME.imagen.text THEN  'si hay grabado un enlace a una imagen en la base de datos
      lafoto = "/tmp/foto"  'path en /tmp para un fichero temporal
      SHELL "convert -resize " & ME.Panel1.Height & "x" & ME.Panel1.height & " " & ME.imagen.text & " " &/ lafoto WAIT 'Redimensiono la foto en un fichero temporal al tamaño del contenedor de la misma, Panel1 (arrangement=fill y Expand=true)
      TRY ME.foto.Picture = Picture.Load(lafoto)
      IF ERROR THEN
            ME.imagen.text = "" 'si falla la carga de la foto no se avisa, símplemente se elimina del campo de texto, para que desaparezca el enlace malo al grabar.
      ENDIF
    ENDIF
  
END
 


Hasta aquí todo perfecto. Como la base de datos es local (sqlite) todo va muy rapidito y bien.
El problema es que cuando maximizo el formulario y la foto alcanza su tamaño más grande, al "desmaximizar" (Perdona, Cervantes) el fondo de la imagen no se limpia y la imagen en su nuevo tamaño (menor) queda superpuesta al resto de la imagen más grande. Si modifico el tamaño del formulario o lo minimizo y restauro o lo que sea desaparece ese fondo erróneo. He probado con un Me.foto.Clear antes del ME.foto.Load, pero ni caso.
Las preguntas son dos:

1.- ¿Alguien tiene una manera de cargar la foto a su tamaño sin distorsionarla y sin recurrir a herramientas externas (convert en este caso)?
2.-¿Cómo puedo evitar ese fondo fósil que permanece tras desmaximizar?

Cualquier sugerencia será bienvenida.
Gracias de antemano.
 




===================
No podemos regresar
 
última edición por shordi el Viernes, 24 Junio 2011, 18:29; editado 2 veces 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Problema Con El Refresco De Un PictureBox 
 
Por cierto... investigando en este tema he visto que tanto el evento Resize del formulario como el Arrange, tanto del formulario como del panel contenedor, se ejecutan varias veces al mostrar la imagen por primera vez (tres o cuatro veces)... Eso es un coñazo cuando estás haciendo una llamada SHELL...
¿Cómo evitar eso? y ¿Por qué ocurre?¿Tiene que ver con las animaciones de pantalla del compiz?....

Nuevo día, nuevo problema.... joer
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Problema Con El Refresco De Un PictureBox 
 
Hola shordi

No he realizado ninguna prueba con el PictureBox esta vez, pero tengo algo parecido usando un DrawingArea y un control ScrollView. El fin es el mismo, tengo una imagen (gran imagen) cargada en un drawingarea que redimensiono al tamaño de la imagen y como no entra en el espacio visible, pues ese drawingarea está dentro del scrollview. Mediante el ratón puedo arrastrar la imagen (o mejor dicho el propio drawingarea) y nunca redimensiono la imagen en sí misma, aunque no veo el inconveniente en hacerlo.

Gracias a que el dibujado de la imagen se produce dentro del evento _Draw del drawingarea, ésta se refresca siempre que se dispara ese evento (que es siempre que se necesita, automáticamente) y va muy fluido. Como nota adicional, si usamos dicho evento para dibujar, la propiedad "Cached" del drawingarea debe de estar en False.

Puede que el siguiente código te de algunas ideas. El nombre del control drawingarea en este caso es "canvas".

http://www.assembla.com/code/dfhlog...oc.class?rev=59

Disculpa el coloreado de la sintaxis, parece que el sistema no entiende el código gambas.

Saludos
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Problema Con El Refresco De Un PictureBox 
 
jeje, ni se me había ocurrido usar un DrawingArea... Estudio tu código y te cuento.
Gracias Jesús.
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Problema Con El Refresco De Un PictureBox 
 
Solucionado. Efectivamente el un DrawingArea el control adecuado para esto. Un poquito de investigación y todo solucionado, sin la chapuza esa de recurrir a convert... jeje
Gracias por las pistas, Jesús.
He hecho un pequeñísimo proyecto con el ejemplo ya solucionado, por si a alguien le interesa.

Lo podéis bajar de aquí http://desconcertado.es/archivos/visor.zip
 



 
shordi - 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 Problema Con Result (Solucionado) chen_08 Bases de Datos 1 Martes, 23 Marzo 2010, 17:56 Ver último mensaje
jguardon
No hay nuevos mensajes Problema Con Settings (Solucionado) Dani26 General 4 Viernes, 03 Diciembre 2010, 12:44 Ver último mensaje
Dani26
No hay nuevos mensajes Actualizaciones Del Sistema.Tiempo De Refr... Shell Mundo Linux 3 Lunes, 28 Agosto 2017, 19:56 Ver último mensaje
jsbsan
No hay nuevos mensajes Dibujar. Refresco Del DrawingArea Shell General 1 Sabado, 14 Abril 2018, 13:57 Ver último mensaje
Shell
 

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