Wenn ich richtig zu verstehen, könnte ein Ansatz halten, das Desktop-Hintergrund Bild zu bekommen sein, überprüfen Sie in einigen Herren, welche Farbe es ist, und dann Ihre Anwendung Farbe auf dieser Grundlage ändern.
Es ist ein Artikel on geekpedia über hält den aktuellen Desktop-Hintergrund bekommen (und viele Zugriffe auf Google auf dem), aber der Grundgedanke ist, den Registrierungswert der aktuellen Tapete zu greifen:
RegistryKey rkWallPaper = Registry.CurrentUser.OpenSubKey("Control Panel\\Desktop", false);
string WallpaperPath = rkWallPaper.GetValue("WallPaper").ToString();
Sie könnte dann diesen Pfad verwenden, um das Bild zu öffnen. Sie können dann viele Eigenschaften wie die Abmessungen und individuelle Pixelfarben in RGB erhalten.
Um herauszufinden, ob es "mehr weiß" oder "mehr schwarz" ist, haben Sie viele Möglichkeiten.
Eine Idee wäre, jede Pixelfarbe in RGB zu erhalten, die Werte zu mitteln (um den Graustufenwert zu erhalten) und dann den Grauwert jedes Pixels über das Bild zu mitteln. Wenn dies> 128 herauskommt, könnte es als "weiß" angesehen werden. Wenn < 128 dann "schwarz". Grundsätzlich entscheiden Sie, auf welcher Seite der mittleren grauen Trennlinie sich die Bildpixelintensitäten ausmitteln.
// Psudo code - can't check the C# spec atm.
foreach(Pixel p in image)
{
// get average of colour components.
double greyScale = (p.Red + p.Green + p.Blue)/3;
totalIntensity += greyScale;
}
double averageImageIntensity = totalIntensity/image.NumPixels;
if(totalIntensity > 128) // image could be considered to be "white"
else // image could be considered "black".
Probleme: könnte ein langsamer Vorgang sein, könnten Sie nur einen Teil der Pixel (etwa jeder 10. ein etc.) um Zeit zu sparen probieren möchten. Im Allgemeinen scheint es, als wäre es ein ziemlich hacky Sache überhaupt zu tun. Das Ziehen von Benutzerdateien zur Laufzeit und das Durcheinander mit ihnen ist kaum sauber und bietet potenzielle Sicherheits- und Stabilitätsprobleme. Was ist, wenn das Bild duff oder beschädigt ist?
Persönlich würde ich vorschlagen, einfach dem Benutzer die Wahl der Farbe/Thema/Haut selbst zu geben, oder besser noch lassen Sie sie anpassen!
Diese Frage enthält Antworten, die Ihnen helfen werden: http://stackoverflow.com/questions/946544/good-text-foreground-color-for-a-given-background-color/946570 –
Verwandte (aber Duples selbst) : http://stackoverflow.com/questions/3116260/given-a-background-color-how-to-geta-a-foreground-color-that-make-it-readable-on http://stackoverflow.com/ Fragen/3942878/how-to-decide-font-color-in-white-oder-black-je-on-Hintergrund-Farbe – JYelton