最接近的,我是來爲這樣的問題是在一個項目都是我們實施了一些顏色處理,以確保在CAD程序元素並非「意外」隱藏用戶改變背景顏色。例如,如果背景顏色是黑色,並且CAD文件中有一些白色元素,則一切都很好。白色元素在黑色背景下顯然是可見的。但是,如果用戶更改爲白色背景,則白色元素不再可見。我們實現了一些操作(非常重要)元素顏色(繪製期間)的邏輯,以確保它是可見的。通常情況下,只有元素顏色與背景顏色完全相同時,纔會使用此邏輯。後來,我們擴展了檢查以更改元素的顏色,如果它「靠近」背景顏色。這是非常成功的,因爲沒有元素被意外隱藏。但是,由此產生的顏色有時非常可怕。這只是我不得不以編程方式處理顏色的一些背景。
這是post that describes how to pick a good text color for a given background color。這可能是有限的使用,因爲不只是想要一個可見的顏色,你可能會更喜歡使用紅色(或者其他顏色),只有當它不易讀(或不明顯地表示問題)。
Here is an article that describes how to modify a color by manipulating brightness and saturation而不是打打鬧鬧與RGB值。
您可以使列表中的問題項目具有白色背景,然後在背景中使用紅色文本。我沒有做過太多的UI編程,所以我不能告訴你在實踐中這很容易或難以實現(更改ListBox中單個項目的背景顏色)。
使用自己發佈爲起點的第一個鏈接,你可以測試紅色,看它是否是「易於閱讀」的一些顏色數學。紅色與背景顏色有多遠?如果它「太接近」,放棄並獲得更好的對比色(與沒有錯誤時繪製的顏色不同)。
您可以爲幾種標準Windows配色方案中的每一種定義一種「警告」顏色(通過切換到這些方案中的每一種,定義滿足給定文本顏色和背景顏色的警告顏色)。如果用戶碰巧使用了其中一種方案(或者至少背景顏色和文字顏色與您定義的背景/文字顏色組合之一匹配),則只需使用您預先定義的警告顏色之一即可。如果用戶不是,則嘗試通過將用戶的背景顏色和文本顏色與預定義的顏色進行比較來找到可能起作用的顏色,並使用最匹配的顏色。如果沒有合適的匹配項(即所有可能的預定義警告顏色在給定某些條件時都不是「易讀」的),那麼嘗試從頭開始計算可見的顏色,但與您要替換的文本顏色不同。
您可以定義幾種離散的警告顏色,您可以根據特定的顏色範圍輕鬆讀取它們。也許你定義了16種顏色。如果背景顏色屬於ColorRange1,Color2屬於BackgroundColor2等,您可以選擇使用Color1。我不知道您需要定義多少顏色才能確保您對所有可能的顏色組合都有「好」選擇。通過「手動」定義警告顏色,與在運行時嘗試生成警告顏色相比,您可能有更好的機會實現相對「美觀」的顏色。
如果您能夠爲給定的背景顏色(例如未選定)預定義單一警告顏色,則可以使用背景顏色之間的比率爲所選聚焦和未聚焦的案例插補相應的警告顏色 - 例如,未選擇vs選定焦點 - 並將該比率(或相反)應用於「基本」警告顏色。
我不認爲這些建議中的很多(或任何)建議都特別好。當我閱讀並思考你的問題時,他們只是我的一些想法。
我認爲警告是黃色的,錯誤是紅色的? – Nate 2010-12-03 22:27:08