मैं सही ढंग से समझ रहा हूँ, तो एक दृष्टिकोण, डेस्कटॉप वॉलपेपर छवि के काबू पाने कुछ मनोर यह है क्या रंग में जाँच करें और फिर अपने आवेदन के आधार पर रंग बदलने के लिए हो सकता है।
एक लेख on geekpedia (उस पर गूगल पर और हिट के बहुत सारे) वर्तमान डेस्कटॉप वॉलपेपर को पकड़ करने के बारे में नहीं है, लेकिन मूल आधार वर्तमान वॉलपेपर के रजिस्ट्री मान हड़पने के लिए है:
RegistryKey rkWallPaper = Registry.CurrentUser.OpenSubKey("Control Panel\\Desktop", false);
string WallpaperPath = rkWallPaper.GetValue("WallPaper").ToString();
आप तब छवि को खोलने के लिए उस पथ का उपयोग कर सकते हैं। फिर आप आरजीबी में आयामों और व्यक्तिगत पिक्सेल रंगों जैसे कई गुणों को पकड़ सकते हैं।
यह काम करने के लिए कि क्या यह "अधिक सफेद" या "अधिक काला" है, आपके पास कई विकल्प हैं।
एक विचार आरजीबी में प्रत्येक पिक्सेल रंग प्राप्त करने के लिए होगा, मूल्यों का औसत (ग्रेस्केल मान प्राप्त करने के लिए) और फिर छवि में प्रत्येक पिक्सेल के ग्रेस्केल मान को औसत करें। यदि यह आता है> 128 तो यह "सफेद" माना जा सकता है। यदि < 128 फिर "काला"। असल में आप निर्णय ले रहे हैं कि मध्य-ग्रे विभाजित रेखा के किनारे छवियों की पिक्सेल तीव्रताएं औसत हैं।
// 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".
समस्याएं: समय बचाने के लिए एक धीमी गति से प्रक्रिया हो सकता है, आप केवल पिक्सल के कुछ नमूने के लिए चाहते हो सकता है (हर 10 वीं एक आदि कहते हैं,)। आमतौर पर, ऐसा लगता है कि यह काफी हद तक काम कर रहा है। रन-टाइम पर उपयोगकर्ता फ़ाइलों को खींचना और उनके साथ गड़बड़ करना मुश्किल से साफ है, और यह संभावित सुरक्षा और स्थिरता चिंताओं को प्रदान करता है। क्या होगा यदि छवि डफ या भ्रष्ट आदि है
व्यक्तिगत रूप से मैं सुझाव देता हूं कि उपयोगकर्ता को केवल रंग/थीम/त्वचा का विकल्प दें, या बेहतर है कि उन्हें इसे अनुकूलित करने दें!
इस प्रश्न में ऐसे उत्तर हैं जो आपकी सहायता करेंगे: http://stackoverflow.com/questions/946544/good-text-foreground-color-for-a-given-background-color/946570 –
संबंधित (लेकिन स्वयं को डुप्लिकेट करता है) : http://stackoverflow.com/questions/3116260/given-a-background-color-how-to-get-a-foreground-color-that-make-it-readable-on http://stackoverflow.com/ प्रश्न/3942878/कैसे-से-तय-फ़ॉन्ट-रंग-इन-व्हाइट-या-ब्लैक-ऑन-बैकग्राउंड-कलर – JYelton