martes, 10 de abril de 2012

Crear listas (list boxes) en Matlab con líneas de diferentes colores

  • Problema: Generamos una interfaz de usuario (GUI) con GUIDE en Matlab y deseamos que un listbox que hemos creado presente su información con líneas multicolores. En las propiedades del control vemos que sólo es posible cambiar el fondo (backgroundcolor) de la lista o list box.
  • Descripción: Imaginemos que hemos creado una interfaz con una lista denominada listbox1, una manera habitual de pasarle los datos que debe presentar es la siguiente:

    datos = {'Dato A', 'Dato B', 'Dato C'};
    set(handles.listbox1, 'String', datos);


    Solución: La solución a este problema pasa por recordar que los componentes de las GUI generadas con Matlab soportan HTML. De este modo, lo único que tendremos que hacer es reescribir cada string para que tenga el código HTML que permita modificar el color. En nuestro ejemplo:

    datos = {'<HTML><FONT color="red">Dato A</FONT></HTML>', '<HTML><FONT color= "rgb(255,0,0)">Dato B</FONT></HTML>', '<HTML><FONT color= "#ff0000">Dato C </FONT></HTML>'};set(handles.listbox1, 'String', datos);
Nótese que para los colores típicos, es posible utilizar las palabras clave: red, blue, green, etc pero también el código RGB (formato de Dato B) o el color en formato hexadecimal (Dato C).
Si encontraste una solución a tu problema y ahorraste tiempo, ya me doy por satisfecho. También podrías invitarme a un café con una pequeña donación en Paypal. ¡Gracias!