c# - usar - ImageList: las imágenes de 32 bits pierden calidad
imagelist c# (1)
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.
Ver captura de pantalla:
Propiedades usadas
ColorDepth: Depth32Bit
ImageSize: 16; 16
TransparentColor: Transparent
Hay píxeles negros detrás de píxeles que eran semitransparentes pero no completamente transparentes.
Volver a agregar todas las imágenes restaura la calidad original, pero después de un par de minutos, se ve como en el lado derecho de la captura de pantalla.
Parece que los datos del canal alfa se pierden cuando las imágenes se almacenan como ImageStream
(comportamiento predeterminado de VS Designer). Entonces, si está bien dejar de usar Designer para establecer imágenes en ImageList
, puede usar imágenes semitransparentes hasta ColorDepth.Depth32Bit
. Es muy inconveniente pero funciona.
De modo que puede colocar sus imágenes en el archivo Resources.resx
y agregarlas en el lugar apropiado del código. Por ejemplo en el constructor de usted UserControl
/ Form
, después de llamar a InitializeComponent()
por un código como este:
_imageList.Images.Add(Resources.Image32);
_imageList.Images.SetKeyName(0, "Image32");
_myButton.Image = 0;
(Esta información está disponible en los comentarios a la respuesta marcada de respuesta, la he agregado como respuesta, por lo que sería más difícil perderse otra opción disponible)