2009-11-30 105 views
1

Windows 7任務欄按鈕繪製在陰影背景上。不知何故,色彩反映了鼠標在按鈕上的位置。如何繪製Windows 7任務欄(如陰影按鈕)

我想在我的應用程序中使用這樣的按鈕。我怎樣才能做到這一點 ?

+0

我覺得它基本上是一個簡單的徑向漸變,隨着鼠標的移動指針。當鼠標靠近按鈕頂部時,會出現第二個漸變。這是你想知道的嗎?你是不是在尋找一個隨時可用的任務欄按鈕? :) – OregonGhost 2009-11-30 14:02:41

+0

我剛剛查過,順便說一下,至少啓用了Aero後,按鈕看起來不是窗口,整個按鈕列表是一個窗口。這意味着這些按鈕可能是手動繪製的。但是,UISpy分別顯示按鈕(Windows UI自動化)。 – OregonGhost 2009-11-30 14:06:00

+0

謝謝OregonGhost。你是對的。整個Windows 7任務欄是一個窗口。這在XP中也是這樣,儘管窗口類在那裏不同。即使使用新的功能區也是如此:應用程序窗口中的所有功能區都是「NetUIHWND」類型的ONE窗口。我們爲什麼要做一個窗口管理員呢? – 2009-12-08 12:34:08

回答

0

我相信它們是作爲GPU上的着色器程序實現的。只需一個簡單的程序,即可獲取光標位置,並根據距離該位置的距離計算每個像素的亮度。

+0

如果我沒有記錯,他們在一個虛擬機中使用非WDDM驅動程序,所以應該有一個軟件算法。 – OregonGhost 2009-11-30 14:01:25

+0

他們呢?我以爲他們在Aero Glass關閉時被禁用。無論如何,如果你使用軟件做的話,算法是一樣的。慢一點。 – jalf 2009-11-30 14:26:06

1

也許嘗試

DrawThemeBackground

http://msdn.microsoft.com/en-us/library/bb773289(VS.85).aspx

給它的BS_PUSHBUTTON不變。我已經在Windows XP中使用它來繪製豪華的藍色XP主題控件,但不是在Aero中,但它值得一試。

+0

謝謝,雖然不是解決方案,這是一個很好的提示。我有兩三個地方是我試圖畫我自己的對象的按鈕。使用DrawThemeBackground我可以通過Windows以原始方式完成它。 – 2009-12-08 12:24:44

0

它採用了新的動畫API(有一些是存在於Vista中,延長在7)沒有魔幻風格設置,你仍然需要做你自己

+0

的任何源代碼? – 2009-12-08 12:23:31