根據指定的Windows theme,Windows API有DrawThemeText Function用於將文本繪製到某個part and state的樣式的矩形。 (Andreas Rejbrand做了一個neat application展示零件和狀態。)是否可以確定DrawThemeText使用的字體面/大小/顏色?
是否可以確定給定零件和狀態使用的字體,大小和顏色?
GetSystemMetrics可以用來找出只有一些系統字體。
根據指定的Windows theme,Windows API有DrawThemeText Function用於將文本繪製到某個part and state的樣式的矩形。 (Andreas Rejbrand做了一個neat application展示零件和狀態。)是否可以確定DrawThemeText使用的字體面/大小/顏色?
是否可以確定給定零件和狀態使用的字體,大小和顏色?
GetSystemMetrics可以用來找出只有一些系統字體。
有一堆GetThemeXxxx()函數。你可能分別尋找GetThemeFont(),GetThemeMetric()和GetThemeColor()。度量標準是一個猜測,還有其他幾個尺寸相關的標準。 GetThemeFont也返回字體大小。 MSDN庫中的Start here。
我一直無法追查GetThemeFont的一個工作示例,更不用說管理版本的VisualStyleRenderer.GetThemeFont了。檢查Mono源代碼會得到作者的評論,他們也無法讓GetThemeFont返回任何內容,而是返回null。
TMT_FONT的使用一致地引發非託管內存錯誤,並且TMT_GLYPHFONT的使用始終返回「不支持」錯誤。這個特定的api似乎是非常有缺陷的,並且(我敢說這是)不起作用。
標記爲答案的答覆根本不是答案。作者問如何開車,你指着他的汽車不會啓動。
我已經添加了一個測試形式的要點來顯示GetThemeFont,VisualStyleRenderer.GetFont的管理包裝器不返回任何VisualStyleElements的非空值https://gist.github.com/1219126。如果您使用Reflector檢查方法,您會看到他們在受管理的環境中如何處理GetThemeFont - 這並不重要。 – shellscape 2011-09-15 12:42:17
我已經在這裏發佈了一個WPF示例:http://blog.quppa.net/2011/10/24/windows-theme-fonts-redux-sample-code/ – Quppa 2011-10-23 16:21:38
哇,我不知道我是如何錯過所有這些功能。乾杯。 – Quppa 2011-03-08 05:47:02
GetThemeFont()和GetThemeColor()確實是要使用的函數。前者將返回字體/大小/重量/等。 (它返回一個LOGFONT),後者將返回給定TMT_TEXTCOLOR屬性的字體顏色。 – Quppa 2011-03-08 11:43:38
我最終在這裏寫了一些關於這方面的內容:http://blog.quppa.net/2011/04/30/windows-theme-fonts/ – Quppa 2011-04-30 14:59:53