簡體   English   中英

在.NET中獲取默認的Windows系統顏色

[英]Get default Windows System Colors in .NET

我正在編寫一個自定義Button控件作為(即將成為)免費控件套件的一部分,我想將我的(默認)控件顏色基於相應的Windows系統顏色。 因此,在線查找“默認的Windows系統顏色”后,我無法找到有關Windows控件的系統顏色(特別是不是按鈕控件)的信息。

有沒有辦法在.NET中獲取此顏色信息(例如按鈕邊框顏色,按鈕突出顯示顏色,按鈕懸停顏色,按鈕單擊背景顏色等)?

是。 事實上,有一整個專門的課程:

SystemColors類

...或者對於WPF(感謝@ORMapper), System.Windows.SystemColors類

有一個系統顏色類,它將為您提供顏色。

對於WinForms使用:

System.Drawing.SystemColors

對於WPF使用:

System.Windows.SystemColors

您還可以使用GetSysColor函數 api函數。

瓦爾特

你可以使用Win API, GetSysColor函數......

[DllImport("user32.dll", CharSet=CharSet.Auto)]
public static extern int GetSysColor(int nIndex);

該函數返回給定元素的紅色,綠色,藍色(RGB)顏色值。

要顯示RGB值的組件,請使用GetRValue,GetGValue和GetBValue宏。

單色顯示器的系統顏色通常被解釋為灰色陰影。

要使用系統顏色畫筆繪制,應用程序應使用GetSysColorBrush(nIndex),而不是CreateSolidBrush(GetSysColor(nIndex)),因為GetSysColorBrush返回緩存的畫筆,而不是分配新的畫筆。

我想要同樣的事情。 我的方法是,在初始化時,創建一個臨時窗口,其背景顏色在GetSysColor(COLOR_BTNFACE)中指定,這是對話框的“標准”背景顏色。 然后,我創建一個沒有文本的按鈕並獲取顏色。 永遠不會顯示此臨時窗口,並立即銷毀(WM_CREATE退出代碼= -1)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM