别的不多说了,直接放代码: /// <summary> /// 获取的文件存储的根目录 /// </summary> private string IconForder { get { return string.Format("{0}//ReadIcon", Application.StartupPath); } } [System.Runtime.InteropServices.DllImport("shell32.dll")] private static extern int ExtractIconEx(string lpszFile, int niconIndex, ref IntPtr phiconLarge, ref IntPtr phiconSmall, int nIcons); /// <summary> /// 打开读取的图标文件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void BtnOpen_Click(object sender, EventArgs e) { try { if (OFDialog.ShowDialog() == DialogResult.OK) { this.Refresh(); int LenIcon = 0; int FileName = 1; IntPtr Large, Small; Large = Small = (IntPtr)0; LenIcon = ExtractIconEx(OFDialog.FileName, -1, ref Large, ref Small, 1); for (int i = 0; i < LenIcon; i++) { ExtractIconEx(OFDialog.FileName, i, ref Large, ref Small, 1); Icon ResIco = Icon.FromHandle(Large); //在窗体上绘制显示 this.CreateGraphics().DrawIcon(ResIco, (i / 3) * 40, (i % 3) * 40); if (!Directory.Exists(this.IconForder)) { Directory.CreateDirectory(this.IconForder); FileName = 1; } else { string[] SFiles = Directory.GetFiles(this.IconForder); FileName = SFiles.Length + 1; } ResIco.ToBitmap().Save(string.Format("{0}//{1}.ico", this.IconForder, FileName), ImageFormat.Icon); } this.BtnOpenFile_Click(sender, e); } } catch (Exception ex) { MessageBox.Show(ex.Message, "异常信息", MessageBoxButtons.OK, MessageBoxIcon.Error); } } /// <summary> /// 打开文件目录 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void BtnOpenFile_Click(object sender, EventArgs e) { Process.Start(this.IconForder); }