方法 1 从数字上看似乎很快,但在现实生活中却并非如此,特别是如果我不对列表使用虚拟化(即使它很慢)。我在 IValueConverter 中异步运行它们,看起来非常慢。资源管理器会立即执行此操作,但是如何执行呢?有没有更快的方法来获取关联图标?
到目前为止我已经尝试过:
方法一:
ExtractIcon.GetIcon(filename, true);
where
public static System.Drawing.Icon GetIcon(string strPath, bool bSmall)
{
SHFILEINFO info = new SHFILEINFO(true);
int cbFileInfo = System.Runtime.InteropServices.Marshal.SizeOf(info);
SHGFI flags;
if (bSmall)
{
flags = SHGFI.Icon | SHGFI.SmallIcon | SHGFI.UseFileAttributes;
}
else
{
flags = SHGFI.Icon | SHGFI.LargeIcon | SHGFI.UseFileAttributes;
}
SHGetFileInfo(strPath, 256, out info, (uint)cbFileInfo, flags);
try{
return System.Drawing.Icon.FromHandle(info.hIcon);}
catch{
return null;
}
}
执行时间为 188ms; (100 次迭代)
方法2.
System.Drawing.Icon.ExtractAssociatedIcon(filename);
执行时间为 661ms; (100 次迭代)
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)