Hola! Tengo una pantalla con la librería utft y me gustaría realizar una limpieza parcial de la pantalla para no tener que recargar toda la pantalla con todas las fotografías. He buscado todas las funciones pero no la encuentro y he visto gente que lo hace sólo un barrido parcial.
Se puede hacer hacer esto?
Un saludo
Supongamos que tu objetvo fuera myGLCD
entonces usa myGLCD.clrScr()
¿Qué pantalla y arduino estas usando en tu proyecto?
¿Cuántas imagenes usas en el fondo?
UTFT es una excelente libreria que abarca varios controladores, es muy buena para aprender, pero a la hora del manejo de mayor potencia gráfica, y aprovechamniento de recursos como el lector SD, o de las funciones graficas avanzadas que quieres, se queda corta.
Eso que quieres hacer es bastante complicado ya que se requieren funciones tipo alpha blend y transparencias, que la libreria UTFT no tiene.
surbyte ha mencionado una instrucción que te puede servir, pero tendrás que volver a cargar todo.
Quizás podrías ajustar las imagenes que quieres en el fondo de pantalla y ubiques sobre ellas una máscara en forma de un rectángulo que combine con los colores del diseño y sobre esa máscara solo realices las actualizaciones que quieres, sin tener que borrar todo el fondo.
De otra forma si cargas cada vez la imagen de fondo y actualizas lo que quieres dibujar sobre ella, conseguiras que la pantalla tenga un efecto de "parpadeo".
Para que un "parpadeo" como el que te describo no se perciba, la frecuencia de refresco debe ser capaza de engañar a los ojos, como para que se perciba como un movimiento natural. El hardware simple que podemos conseguir para arduino no tiene aun esa capacidad, es por eso que no podemos disfrutar de funciones de "video", alpha blend o transparencias.
Con clrScr el problema es que carga todo y hace un efecto barrido que no me gusta u es lo que queria evitar. De momento lo he solventadado cargando una imagen sobre otra de esta forma puedo carbiar la imagen de un "icono". Con el rectangulo me he encintrado tambien el,efecto parpadeo que tampoco queda nada bien. Cargo bastantes imagenes aunque sean pequeñas. Tipo icono de un movil de 50x50 pero y alguna mas pequeña pero 7/8 al menos.
Lo que estoy viendo que si por ejemplo imprimo un numero el 9 subo con el boton a 12 lo actualiza bien pero bajo a numero de un digito y se queda el dos de fondo. Si por ejemplo estoy en el 5 veo 52 y si utilizo clrScr tendre el barrido que quiero evitar.
Uso una pantalla TTDB02 3,2WD con el shield itdb02 para el Mega
Muchas gracias por vuestra ayuda
Para evitar que queden "residuos de números" al actualizar un determinado valor en pantalla, te sugiero que los valores numéricos los conviertas a cadenas alfanuméricas antes de presentarlos en pantalla.
Este ejemplo es para la libreria ILI9341_due, sin embargo puede convertirse en su equivalente UTFT sin problemas.
En el encabezado defines una variable tipo char, personalmente he usado esta variable de impresión
char textBuff[20];
//Presenta diferencia, solo se obtiene 0 en el caso de segundos pares y 5 en segundos impares
t1.setFontColor(WHITE, tft.color565(0, 0, 0));
t1.selectFont(StarX4); // Fuente grande basada en la Arial Narrow tamaño 35
sprintf(textBuff, "%02d", AnguloServo1);
t1.drawString(textBuff, 140, 165);
//Presenta diferencia
Ok muchas gracias. Veia en algun codigo que hacian eso y probe pero se quedaban residuos igual. Sabiendo que es para eso lo investigo.
Un saludo y gracias de nuevo
Hola, yo he tenido el mismo problema de residuos de números y lo solucione de una manera no muy ingenieril pero útil, antes de imprimir los nuevos números, "borro" los anteriores con espacios vacios con el mismo color de fondo.
Al final he tenido que hacer el apaño de escribir los espacios en blanco. De la otras formas me dejaba siempre residuos.