2012-04-29 12 views
6

estoy usando ImageList para TreeView y ListView. Primero configuré la calidad de imagen en 32 bits y luego agregué imágenes que son semitransparentes. La calidad se ve bien, pero después de un par de minutos de codificación, compilación y ejecución de la aplicación, la calidad se ve mal.ImageList: 32 bits imágenes pierden calidad

Ver Captura: enter image description here

propiedades utilizadas

ColorDepth: Depth32Bit 
ImageSize: 16; 16 
TransparentColor: Transparent 

Hay píxeles negros detrás de píxeles que eran semitransparente, pero no totalmente transparente.

volver a agregar todas las imágenes restaura la calidad original, pero después de un par de minutos, parece que en el lado derecho de la pantalla.

+0

¿Qué versión de Visual Studio? Apuesto a que funciona bien si carga la lista de imágenes en tiempo de ejecución. Probablemente un error en el código VS que almacena/carga el estado de la lista de imágenes en designtime. –

+0

Es VS2010 Ultimate. También pensé en cargarlos en tiempo de ejecución, pero esa no es la forma en que * debería * ser. ¿Alguna otra idea? – bytecode77

+0

Cargando en tiempo de ejecución desde un recurso es exactamente lo que haría. Entonces puedo elegir un tamaño que coincida con la escala de la fuente. –

Respuesta

8

Parece que los datos del canal alfa se pierde cuando las imágenes se almacenan como ImageStream (comportamiento por defecto de VS Designer). Por lo tanto, si puede dejar de usar Designer para establecer imágenes en ImageList, puede usar imágenes semitransparentes hasta ColorDepth.Depth32Bit. Es muy inconveniente pero funciona.

Así que usted puede poner sus imágenes para Resources.resx archivo, y añadir en su lugar apropiado en el código. Por ejemplo en el constructor de ustedes UserControl/Form, después de la llamada a InitializeComponent() por código como este:

_imageList.Images.Add(Resources.Image32); 
    _imageList.Images.SetKeyName(0, "Image32"); 
    _myButton.Image = 0; 

(Esta información está disponible en observaciones sobre la respuesta marcada respuesta, he añadido esto como respuesta por lo que sería es más difícil perderse otra opción disponible)

Cuestiones relacionadas