Bu yöntem denetler:
public static bool ContrastReadableIs(Color color_1, Color color_2)
{
// Maximum contrast would be a value of "1.0f" which is the brightness
// difference between "Color.Black" and "Color.White"
float minContrast = 0.5f;
float brightness_1 = color_1.GetBrightness();
float brightness_2 = color_2.GetBrightness();
// Contrast readable?
return (Math.Abs(brightness_1 - brightness_2) >= minContrast);
}
okunabilir ForeColor arayan bir backcolor yaşıyorsunuz?
Here arka rengi ters çevirmek için basit ve oldukça iyi bir yaklaşımdır.
NB: Bu işlem, renk ve ters çevrilmiş rengin parlaklık bakımından farklı olduğu anlamına gelmez, ancak iki renk parlaklıkta en az 0.5 farklılık gösteriyorsa, genellikle okunabilir bir karşıtlık gösterir.
Test tıklaması işleyicisi için kod button1
Random r = new Random();
while (1 < 2)
{
// Get a random fore- and backcolor
Color foreColor = Color.FromArgb(r.Next(0, 256), r.Next(0, 256), r.Next(0, 256));
Color backColor = Color.FromArgb(r.Next(0, 256), r.Next(0, 256), r.Next(0, 256));
// Contrast readable?
if (ContrastReadableIs(foreColor, backColor))
{
button1.ForeColor = foreColor;
button1.BackColor = backColor;
System.Media.SystemSounds.Beep.Play();
break;
}
}
başka bir çözüm [buradan] vardır (http://stackoverflow.com/a/2509596/779408) – breceivemail