2011-04-08 45 views
4

在閱讀Shadow for custom mouse cursor問題的答案後,我做了一些測試。自定義鼠標光標的陰影(2)

從我的Delphi應用程序,我加載了我的光標的32位和24位版本。從未有過陰影。我用標準的Windows箭頭指針做了同樣的事情。沒有影子。

此外,我嘗試了相反的做法,並將我的自定義光標分配給Windows鼠標設置中的「正常選擇」指針。 24位和32位指針都受到了影響。

所以,它出現在遊標中的alpha通道不會影響陰影行爲。但是我的應用程序中做了什麼錯誤?

第一步是通過一個rc文件與

CUR_EDGE_R Cursor DISCARDABLE "edge_r.cur" 

將光標移動到應用程序的資源和應用程序被加載:

const 
    crEdgeR = TCursor(135); 
. 
. 
    Screen.Cursors[crEdgeR] := LoadCursor(HInstance, 'CUR_EDGE_R'); 

那麼,什麼是必經之路讓Windows爲自定義光標添加陰影?

注意:我看到互聯網上的帖子建議創建兩個版本的鼠標光標,一個帶有一個沒有陰影的光標,並根據用戶的設置加載合適的光標。這是而不是我正在尋找的解決方案。

+0

您使用的是什麼版本的Delphi? – Pol 2011-04-08 09:22:17

+0

關於您提到的問題的答案,我應該注意到我發現[following](http://support.microsoft.com/kb/307213)非常令人困惑:*「注意:系統設置爲陰影如果光標有一個alpha通道(32 BPP)「*,則鼠標指針被忽略。 – 2011-04-08 09:53:18

+0

@Pol:Delphi 7和Delphi 2009.我正在Windows 7上開發,但應用程序也應該在XP上工作。 @Sertac Akyuz:是的。但它沒有說明它是如何被忽略的。 (可能是全部。) – 2011-04-08 14:27:04

回答

0

爲了在您的自定義光標下放置陰影,您只需使用Alpha通道(可啓用半透明度)設計光標並繪製陰影就位。您甚至可以使用Photoshop/GIMP(或任何其他有能力的圖形編輯器)以「陰影效果」生成光標,將其保存爲PNG,然後使用圖標編輯器(例如Microangello)將PNG轉換爲光標。

據我所知,Windows Vista/7附帶的光標沒有被設計爲「平坦」,使用一些系統效果來生成它們的陰影。

+0

謝謝您的建議,但正如您已經意識到的那樣,我希望系統能夠畫出陰影。我的測試(請參閱第三段)顯示,Windows _can_添加陰影並在將鼠標指針指向鼠標屬性窗口中的系統光標時執行此操作(帶或不帶alpha通道,但不帶陰影)。當我在我的應用程序中加載這個自定義光標時,這不會發生。 – 2011-04-13 06:57:27