标准和(某种程度上)受支持的答案之一是使用来自 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/

10-10 10:45