Nếu tôi hiểu một cách chính xác, một cách tiếp cận có thể là để có được giữ của hình nền máy tính để bàn, kiểm tra tại một số dinh thự màu gì nó là gì và sau đó thay đổi màu ứng dụng của bạn dựa trên đó.
Có một bài viết on geekpedia về việc tổ chức của hình nền máy tính để bàn hiện nay (và rất nhiều hit trên google trên đó), nhưng tiền đề cơ bản là để lấy các giá trị registry của giấy dán tường hiện tại:
RegistryKey rkWallPaper = Registry.CurrentUser.OpenSubKey("Control Panel\\Desktop", false);
string WallpaperPath = rkWallPaper.GetValue("WallPaper").ToString();
Bạn sau đó có thể sử dụng đường dẫn đó để mở hình ảnh. Sau đó, bạn có thể giữ nhiều thuộc tính, chẳng hạn như kích thước và màu pixel riêng lẻ trong RGB.
Để tìm hiểu xem "màu trắng" hay "đen hơn", bạn có nhiều tùy chọn.
Một ý tưởng sẽ là nhận từng màu pixel trong RGB, trung bình các giá trị (để lấy giá trị thang độ xám) và sau đó trung bình giá trị thang độ xám của mỗi pixel trên hình ảnh. Nếu điều này xuất hiện> 128 thì có thể được coi là "trắng". Nếu < 128 thì "đen". Về cơ bản bạn đang quyết định bên nào của đường phân chia màu xám giữa các cường độ điểm ảnh trung bình ra ngoài.
// 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".
Vấn đề: có thể là một thủ tục chậm, bạn có thể chỉ muốn lấy mẫu một số pixel (ví dụ, mỗi thứ 10, v.v.) để tiết kiệm thời gian. Nói chung, nó có vẻ giống như một điều khá khó khăn để làm gì cả. Việc kéo các tệp người dùng vào thời gian chạy và gây rối với chúng hầu như không sạch sẽ và nó cung cấp các mối quan tâm về bảo mật và ổn định tiềm ẩn. Điều gì sẽ xảy ra nếu hình ảnh là duff hoặc tham nhũng, vv ..
Cá nhân tôi khuyên bạn chỉ nên cho người dùng lựa chọn màu sắc/chủ đề/da, hoặc tốt hơn nhưng hãy để họ tùy chỉnh!
Câu hỏi này chứa câu trả lời sẽ hỗ trợ bạn: http://stackoverflow.com/questions/946544/good-text-foreground-color-for-a-given-background-color/946570 –
Liên quan (nhưng tự lừa dối) : http://stackoverflow.com/questions/3116260/given-a-background-color-how-to-get-a-foreground-color-that-make-it-readable-on http://stackoverflow.com/ question/3942878/how-to-decision-font-màu-trong-trắng-hoặc-đen-phụ thuộc-trên-nền-màu – JYelton