在.NET 1.0 C#應用程序中,我希望在listview控件中顯示文件和文件夾的列表。我想以編程方式從窗口中檢索文件或文件夾的圖標,以在列表視圖中適當地顯示它們。在C#1.0和Alpha通道中檢索系統圖標
目前,我使用的是Windows API Shell32.dll,但是在圖標中Alpha通道出現問題(圖標的背景顯示爲黑色,而不是白色/透明)。
下面是兩個代碼提取,顯示我正在嘗試使用的API,以及實現的代碼來檢索文件夾的系統圖標(該文件的代碼類似)。
[DllImport("Shell32.dll")]
public static extern IntPtr SHGetFileInfo(
string pszPath,
uint dwFileAttributes,
ref SHFILEINFO psfi,
uint cbFileInfo,
uint uFlags
);
... (注:SHELL32是上述API的包裝類)
// Get the folder icon
Shell32.SHFILEINFO shfi = new Shell32.SHFILEINFO();
Shell32.SHGetFileInfo( null,
Shell32.FILE_ATTRIBUTE_DIRECTORY,
ref shfi,
(uint) System.Runtime.InteropServices.Marshal.SizeOf(shfi),
flags);
System.Drawing.Icon.FromHandle(shfi.hIcon); // Load from the handle
// Get the icon for storage in an imagelist //
System.Drawing.Icon icon = (System.Drawing.Icon)System.Drawing.Icon.FromHandle(shfi.hIcon).Clone();
這是正確的做法?
有沒有更好的方法來實現這個目標?
或者,有什麼我需要做的正確設置圖標中的alpha通道?
謝謝!這節省了我很多時間。 – Jayden 2008-12-15 23:49:28