Здравствуйте.
Есть примерно такой код:
IExtractIcon extractor; // IExtractIcon описан через [ComImport]
ImageList imageList;
string path;
uint index;
IntPtr hiconLarge, hicon;
// ...
int hr = extractor.Extract(path, index, ref hiconLarge, ref hicon, 0x00100000);
Icon icon = Icon.FromHandle(hicon);
imageList.Images.Add(icon);
Проблема в том, что иконка при отображении (например в TreeView) получается корявая, как будто бы выполнялся strech. Но размер и глубина цвета иконки и imageList'а одинаковые — 16x16 32bit. В какую сторону копать?