标准和(某种程度上)受支持的答案之一是使用来自 Microsoft.VisualBasic.Compatibility 程序集的Support.IconToIPicture。但是,在.NET 4.0中,为“This API is now obsolete”。
是的,那里有各种各样的solutions,但是我认为如果Microsoft过时的话,将会有另一种“受支持的”替代方法。
最佳答案
我相信,此API已过时,因为IPicture是OLE接口(interface)。通过使用它,您可以进入Microsoft不想让您进入的不受管理的世界。您可以通过调用来重现该行为IntPtr aHIcon = Icon.GetHicnFromIcon(yourIcon);
然后,您需要将此句柄传递给OleCreatePictureIndirect(代码在C++中):
PICTDESC aDesc;
aDesc.cbSizeofstruct = sizeof PICTDESC;
aDesc.picType = PICTYPE_ICON;
aDesc.icon.icon = aHIcon;
IPicture * aPict = 0;
OleCreatePictureIndirect(&aDesc, __uuidof(IPicture), TRUE, (void **) &aPict);
唯一的困难-您将需要提供一个COM互操作代码来包装C++结构和函数调用。
关于.net - 将图标转换为.NET 4.0中的IPicture?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2210594/