2009-11-20 5 views
1

J'utilise des fichiers PNG 32 bits avec transparence. Je les ai ajouté à une liste d'images propriétés:ImageList La transparence ne fonctionne pas à l'exécution

ColorDepth: Depth32Bit 
TransparentColor: Transparent 

Quand je cède l'image à mon bouton de barre d'outils, il affiche un aperçu en fin Visual Studio avec la transparence correcte. Mais quand je lance l'application, la transparence est complètement foiré avec du noir couvrant les régions semi-transparentes.

Comment résoudre ce problème?

alt text

alt text

+0

Si je me souviens bien, il y avait un bug dans le fichier SWF 2.0 ImageList qui supprimerait le canal alpha de 32 images de bits dans une liste d'images * lors de l'enregistrement des ressources de la liste d'images *. Les images sont-elles toujours affichées correctement si vous enregistrez et rechargez le formulaire dans Visual Studio? – OregonGhost

+0

Oui, l'aperçu est toujours correct après avoir enregistré et fermé le formulaire, ou redémarré Visual Studio. –

Répondre

3

La solution est apparemment de mettre

Application.EnableVisualStyles(); 

Avant le début de votre application. Cela a réglé le problème de transparence.

Solution Reference

MSDN on EnableVisualStyles

+0

Ok, j'ai vu ce problème se produire avant que cela ne le résolve. Je me suis demandé pourquoi votre deuxième capture d'écran avait l'air si chunky! –

+0

J'ai eu ce problème dans un complément Word (en utilisant AddinExpress). L'ajout de Application.EnableVisualStyles() à la méthode InitializeComponent de mon AddinModule l'a résolu. –

+0

Ne fonctionne pas pour moi ... – Spook

2

Si vous les ajoutez directement à la barre d'outils sans utiliser une liste d'images Je pense qu'ils vont tirer correctement.

+0

Solution facile. Je préfère aussi cette façon. – OregonGhost

+0

Eh bien, je préférerais utiliser une liste d'images pour faciliter l'échange des images des boutons de la barre d'outils (comme le bouton inactif à bascule). –

+0

Je suis d'accord mais je n'ai jamais réussi à faire fonctionner ça. –