2010-06-16 7 views
4

Je suis très nouveau sur C# et j'ai rencontré un problème et je n'ai pas réussi à le résoudre. J'ai une rangée de boutons qui ont des images .png qui leur sont assignées. Les images sont au format .png pour permettre la transparence, et lisser les bords dans GIMP laisse quelques pixels semi-transparents. J'ai défini les propriétés de la barre d'outils Image List (imglToolbar) pour reconnaître "Transparent" comme la couleur désignée pour apparaître comme transparent. Je travaille dans Visual Studio 2005.Construire des tours partiellement transparents image pixels noir

La chose étrange est que tout semble très bien lorsque je visualise la fenêtre d'aperçu de formulaire Visual C#. Les icônes sont exactement comme elles le devraient. Cependant, une fois que j'ai réellement construit le projet, les boutons traitent chaque pixel semi-transparent près du bord de l'image comme s'il était noir. Il semble qu'il ne peut pas gérer celui qui est à la fois transparent et a de la couleur.

Image via Visual C# forme éditeur:

alt text http://img5.imageshack.us/img5/2577/whatiwanted.jpg

Image de quoi il ressemble quand construit:

alt text http://img690.imageshack.us/img690/7241/whatigot.jpg

Toutes les idées pour lesquelles cela se passe?

Répondre

2

Je viens de trouver la réponse, au moins à ma situation spécifique.

Le formulaire auquel je suis confronté est un conteneur MDI de niveau supérieur. Pour quelque raison que ce soit, le fait que les icônes aient une couleur de 32 bits ne permet pas d'interpréter correctement ces pixels semi-transparents. Le régler sur 24 bits, sur un coup de tête, a complètement résolu le problème. Je ne sais pas si cette situation est due à un facteur invisible, mais le changement de profondeur de couleur a résolu mon problème.

Aussi pour ceux qui peuvent venir ici avec un problème similaire, assurez-vous que la fenêtre n'est pas un enfant d'un conteneur MDI. En cherchant des informations, j'ai trouvé que les enfants MDI ne supportaient pas du tout les TransparencyKeys.

1

J'ai également rencontré ce problème; la modification de la propriété IsMdiContainer du formulaire à false l'a résolu.

+0

Merci, mais il semble qu'il doit rester un conteneur MDI. Bummer. – Sean

Questions connexes