ToolStripItem item = new ToolStripMenuItem();
 Icon icon= new GetSystemIcon().GetIconByFileName(@"F:\软件\FlashFXP_3.7.9.1348_Beta_SC\FlashFXP\flashfxp.exe"); //那现在怎么把这个icon转为item.image
谢谢

解决方案 »

  1.   

    可以使用Icon.ToBitmap()方法将Icon转换为GDI+的位图
      

  2.   

    ToolStripMenuItem tsm = new ToolStripMenuItem("", GetIcon(disk).ToBitmap());
    [DllImport("Shell32.dll")]
            private static extern int SHGetFileInfo
              (
              string pszPath,
              uint dwFileAttributes,
              out   SHFILEINFO psfi,
              uint cbfileInfo,
              SHGFI uFlags
              );
     
            [StructLayout(LayoutKind.Sequential)]
            private struct SHFILEINFO
            {
                public SHFILEINFO(bool b)
                {
                    hIcon = IntPtr.Zero; iIcon = 0; dwAttributes = 0; szDisplayName = ""; szTypeName = "";
                }
                public IntPtr hIcon;
                public int iIcon;
                public uint dwAttributes;
                [MarshalAs(UnmanagedType.LPStr, SizeConst = 260)]
                public string szDisplayName;
                [MarshalAs(UnmanagedType.LPStr, SizeConst = 80)]
                public string szTypeName;
            };
            private enum SHGFI
            {
                SmallIcon = 0x00000001,
                LargeIcon = 0x00000000,
                Icon = 0x00000100,
                DisplayName = 0x00000200,
                Typename = 0x00000400,
                SysIconIndex = 0x00004000,
                UseFileAttributes = 0x00000010
            }public static Icon GetIcon(string strPath)
            {
                SHFILEINFO info = new SHFILEINFO(true);
                int cbFileInfo = Marshal.SizeOf(info);
                SHGFI flags;
                flags = SHGFI.Icon | SHGFI.SmallIcon;
                SHGetFileInfo(strPath, 256, out   info, (uint)cbFileInfo, flags);
                return Icon.FromHandle(info.hIcon);
            }