Hola,
estoy desarrollando un componente heredado de ListView que me gustaría que
mostrase imágenes con más calidad que las obtenidas de un imageList. Mi idea
era crear un ImageListStreamer con las imágenes deseadas, pero es una clase
bastante dura que ni se hereda, ni se puede crear una instancia por ser el
constructor privado, ni nada de nada.
He intentado, serializando un array de imágenes y pasándolo a base 64,
simular la lista de imágenes en un fichero de recursos, pero como me
imaginaba no funciona (era simplemente un intento a la desesperada). Me
gustaría que alguien me comentase si alguien ha tenido el mismo problema y si
ha podido resolverlo.
La segunda parte es poner una imagen de fondo en el listView. Ya se que
mediante el API no es muy complicado y me va perfectamente excepto para
Windows XP, que no me muestra la imagen. He llegado a la conclusion (muy
posiblemente equivocada) que debe alguna función del API ha sido modificada
para esta versión del SO.
Comento la solución que había pensado para que en caso de no encontrar
solución, me digais los pros y los contras:
Añadir en la clase un array de bitmaps en el que introducir la versión con
calidad de las imágenes introducidas en el ImageList.
Sobreescribir el evento OnPaint del ListView para que se dibuje el fondo en
cada repintado (un poco ralentizante creo yo) y además se pinten los iconos y
textos de cada ImageListItem.
Sobreescribir el evento OnLisViewItem_IndexChanged para que cada vez que se
pulse un elemento, se redibujen todos remarcandose el que ha sido pulsado. De
esta forma en lugar de pintar la imágenes del ImageList, le indicaré que
dibuje la imagen con el mismo índice del array de imágenes creado en la
clase. Por no incluir dos arrays de bitmaps (uno por estado de elemento),
había pensado mostrar el elemento no seleccionado en escala de grises, ya que
el algoritmo de conversión es muy sencillo.
Y creo que con esta duda acabo, por poco tiempo.
Muchas gracias.
Leer las respuestas