Ir al contenido


Foto

Por qué hay retardo en TImagen


  • Por favor identifícate para responder
4 respuestas en este tema

#1 Desart

Desart

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 715 mensajes
  • LocationEspaña

Escrito 10 octubre 2013 - 07:27

Hola compañeros, estoy usando un TPicture como un botón en un programa táctil, el problema es que tengo que pulsar y esperar un poco para la siguiente pulsación, me podríais indicar como eliminar este retardo.

el problema es que pruebo estos nuevos componentes que acabo de terminar, en mi pantalla táctil y claro si pulsas varias veces seguidas, no registra bien , si lo hago despacio, si, por eso comento lo del retardo, de todas maneras subo imagen y enlace de los componentes, si este problema tiene solución sería lo adecuado subirlos ya corregidos al FTP

Imagen de los cuatro componentes

Imagen Enviada



el PanelTouchDate pueden ver su código en https://gist.github....onymous/6917736

el PanelTouchDouble en https://gist.github....onymous/6917794

el PanelTouchTime en https://gist.github....onymous/6917817

y por último el PanelTouchInteger en https://gist.github....onymous/6917842


Como siempre sois libres de usarlos sin ninguna restricción por mi parte, pero me gustaria saber si es posible corregir este defecto, que creo que existe

Como siempre gracias por vuestra colaboración.
  • 0

#2 Sergio

Sergio

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.092 mensajes
  • LocationMurcia, España

Escrito 14 octubre 2013 - 03:07

Supongo que la actualización de la imagen "congela" el hilo de ejecución un instante, así que yo probaría a hacer esa actualización dentro de otro hilo solo para eso, y dejar lo de incrementar el valor interno en el hilo principal, de esa forma si haces varios clicks seguidos la variable se actualiza instantáneamente, pero las imagenes lo hacen cuando puedan.

Si no te quieres complicar tanto la vida, coloca 10 imagenes donde vaya cada dígito y juega solo con visible false o true para que sea visible el correcto en cada momento, eso será más rápido pero gastará mucha memoria, claro.

Y una tercera opcion mezclando las dos cosas sería un "triple" buffer: creas 3 imagenes para cada dígito, y cargas el numero anterior (no visible), actual (visible) y posterior (no visible), así al pedirle el "siguiente" tienes la imagen siguiente ya cargada y solo cambias los visibles, luego "desplazas" las otras 2 imagenes a su nueva posición y cargas la que queda vacía: si ves un 5, tienes almacenada 4,5,6, con la de en medio siempre visible, y al ir al siguiente, los "rotas" a 5,6,vacio, y el hilo adicional sería el encargado de cargar el 7 en la imagen que quedó vacia.

Hay muchas técnicas del estilo... una imagen grande con todos los dígitos y usar CopyRect, convertir tus imagenes a fonts (esa es la mejor, por cierto), etc... ya depende, hay que complicarse lo mínimo pera que vaya fluido.
  • 0

#3 Desart

Desart

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 715 mensajes
  • LocationEspaña

Escrito 14 octubre 2013 - 08:12

Hola Sergio gracias por tu respuesta, pero los dígitos son valores de un tLAbel y la imagen es fija, en cada botón, lo que si puede estar ocurriendo (pienso yo), que en el evento OnPaint, tiene que volver a cargarlas todas y por eso puede ser la tardanza, tendré que hacer pruebas en cuanto pueda y mirarlo bien.

muchas gracias por tu colaboración.
  • 0

#4 Sergio

Sergio

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.092 mensajes
  • LocationMurcia, España

Escrito 15 octubre 2013 - 03:01

Si cada boton tiene su glyph cargado, son muchas repeticiones del mismo gráfico en memoria, eso puede beberse la RAM. Prueba con un TImageList con las imagenes y luego usarlas en los botones -no recuerdo qué tipo de botón admite ImageList y cual no- eso reduciría la carga muchisimo.
  • 0

#5 Desart

Desart

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 715 mensajes
  • LocationEspaña

Escrito 15 octubre 2013 - 10:32

Gracias Sergio, he optado por hacer lo siguiente y a mejorado mucho el rendimiento, he cogido y he añadido una variable, en el OnPaint si esta es false no carga la imagen si es true, si y sólo se pone en true cuando cargamos una imagen, realmente son dos imágenes una para los upButton y otra para los DownButtons.
  • 0




IP.Board spam blocked by CleanTalk.