代码之家  ›  专栏  ›  技术社区  ›  Ðаn

在.NET 4.0中将图标转换为ipicture?

  •  3
  • Ðаn  · 技术社区  · 15 年前

    其中一个标准的(有些)支持的答案是使用 支持.icontoipicture Microsoft.VisualBasic.兼容性 装配。但是,在.NET 4.0中, This API is now obsolete “。

    是的,有各种各样的 solutions 尽管如此,但我认为,如果微软正在淘汰这种方法,还有另一种“受支持”的选择。

    1 回复  |  直到 15 年前
        1
  •  2
  •   Kerido    15 年前

    我相信,这个API已经过时了,因为ipicture是一个OLE接口。通过与之合作,你可以深入到微软不希望你进入的非管理世界。你可以通过调用 IntPtr aHIcon = Icon.GetHicnFromIcon(yourIcon);

    然后你需要把这个句柄传递给MuleReaTeCICTION间接(代码是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++结构和函数调用。