Vous pouvez utiliser la couleur négative pour le texte:
Color InvertColor(Color sourceColor) {
return Color.FromArgb(255 - sourceColor.R,
255 - sourceColor.G,
255 - sourceColor.B);
}
Toute couleur est garanti d'être plus ou moins lisible sur sa couleur négative, donc là vous allez. C'est une manière rapide et sale d'inverser une couleur, vous pouvez également vérifier les réponses à cette question: How do I invert a color?
Une autre option consiste à ajouter un halo blanc au texte noir. C'est ce que les gens font dans les applications SIG pour s'assurer que les étiquettes des cartes sont lisibles sur n'importe quelle surface. L'idée de l'effet de halo est d'avoir une fine bordure blanche autour du texte noir. De cette façon, le texte est lisible que ce soit sur fond blanc (la bordure devient invisible) ou sur fond noir (la bordure délimite le texte).
Il existe plusieurs didacticiels sur le sujet, tels que this article ou this SO question (avec l'exemple VB.NET).
Lorsque vous avez un Color
choisi, juste assigner à la propriété ForeColor
de votre zone de texte comme celui-ci:
txtColor.ForeColor = mycolor;
Commander [cet article] (http://www.splitbrain.org/blog/2008-09/18-calculating_color_contrast_with_php) et l'exemple affiché. C'est en PHP mais le concept peut très facilement être transféré sur C#. –
http://stackoverflow.com/questions/1165107/how-do-i-invert-a-colour/1165145#1165145 –