2009-05-18 60 views
1

對於我們的winforms應用程序,我們被要求以紅色對DataGridView中的無效單元格進行着色。我們需要找到與當前視覺樣式相匹配的紅色,但如果用戶選擇了大多數爲紅色的調色板,則該顏色仍然具有獨特性。如何創建與當前視覺樣式相匹配的顏色?我如何確保避免衝突?如何創建與當前視覺樣式相匹配的顏色?

回答

1

我認爲你看着這個錯誤的方式。紅色通常有幾個原因。這是(在西方文化等)通常用來描繪某些事情是錯誤或危險的。但紅色也是一種突出的顏色。但是,當試圖引導用戶注意頁面上的某些內容時,有兩種可靠的方法。

1)GIF動畫或視頻(煩人爲f ***)或

2)發生衝突的顏色

通常是紅色的脫穎而出,但在你的情況下,用戶可能有一個紅色的主題風格,你最好的選擇是使用會衝突的顏色。碰撞的顏色可能會碰撞在一起(如果有意義的話)。

這裏是我在過去使用的幾個網站幫我找的配色方案,可以幫助您,以及:

KulerColor CombosColor scheme designer

這可能不是回答你正在尋找,但我希望它可以幫助

1

這個問題有點模糊,有點主觀;直接評論例子要容易得多。但是,有一個multitude of on-line tools可以幫助您爲網站創建調色板,並且這些可能有助於衡量特定的紅色陰影與各種其他顏色的相互作用。

希望這會有所幫助。

0

看看氪工具包(http://www.componentfactory.com)。他們爲主題管理器提供了一個免費的WinForms控件工具包。這個主題管理器提供了準備使用方法來提取當前顏色值。

我與他們無關。我將它用於我自己的產品(皇家TS http://www.code4ward.net),並發現它非常有用。

如果你想構建漂亮的用戶界面,你應該看看氪的東西。

3

我不認爲原始海報正在尋找顏色(顏色)的調色板,而是他試圖突出顯示一個無效的單元格。所選的高光顏色是紅色的,但他擔心如果用戶選擇了紅色調色板,紅色可能不會伸出。

如何處理:繪製無效單元格時,請使用SystemColors.Window作爲文本,SystemColors.WindowText作爲背景。 (或者DataGridView的任何等價物)。這樣,你可以保證無效的單元格將是正常單元格的相反顏色。

+0

這就是我想要做的 - 使用SystemColor類的顏色 - 但客戶要求紅色。 – Simon 2009-05-19 09:24:41

1

你可能會嘗試使用ControlPaint類的LightDark方法?我做了類似的事情,儘管方向相反。我需要使網格中的某些行突出顯示,但不會像選定的行一樣突出顯示。所以,我創建了一個顏色比默認選擇顏色像這樣輕了一點:

 checkedColor = ControlPaint.Light(grid.DefaultCellStyle.SelectionBackColor, 1.65f); 

可以嘗試使用,可能增加了一些邏輯,以及基於它的一些系統的顏色,是由脫穎而出。例如System.Drawing.SystemColors.HighLightSystem.Drawing.SystemColors.HotTrack