> 文档中心 > [C#]自定义修改文件夹颜色及图标含源码

[C#]自定义修改文件夹颜色及图标含源码

功能介绍:

[C#]自定义修改文件夹颜色及图标

自定义修改文件夹的颜色、以及自定义图片修改文件夹的图标

自定义修改文件夹颜色及图标.主要的功能实现:

​1、实现修改文件图标颜色:程序内置14种不同颜色的文件夹图标素材,可以自由修改不同的文件夹颜色

​2:​自定义修改文件夹图标:首先将图片素材转换成ico图标素材,再将图标素材设置成文件夹颜色

​主要源码:

修改文件夹图标关键代码:

private void FolderColor(string strFile) {     LPSHFOLDERCUSTOMSETTINGS FolderSettings = new LPSHFOLDERCUSTOMSETTINGS();     FolderSettings.dwMask = 0x10;     FolderSettings.pszIconFile = strFile;     //FolderSettings.pszIconFile = @"{icon C:\Users\gy\Desktop\ng.ico}"; ;     FolderSettings.iIconIndex = 0;     UInt32 FCS_READ = 0x00000001;     UInt32 FCS_FORCEWRITE = 0x00000002;     //UInt32 FCS_WRITE = FCS_READ | FCS_FORCEWRITE;     UInt32 FCS_WRITE = FCS_FORCEWRITE;     string pszPath = textBox1.Text;     UInt32 HRESULT = SHGetSetFolderCustomSettings(ref FolderSettings, pszPath, FCS_WRITE);     //Console.WriteLine(HRESULT.ToString("x"));     //Console.ReadLine(); } [DllImport("Shell32.dll", CharSet = CharSet.Auto)] static extern UInt32 SHGetSetFolderCustomSettings(ref LPSHFOLDERCUSTOMSETTINGS pfcs, string pszPath, UInt32 dwReadWrite); [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] struct LPSHFOLDERCUSTOMSETTINGS {     public UInt32 dwSize;     public UInt32 dwMask;     public IntPtr pvid;     public string pszWebViewTemplate;     public UInt32 cchWebViewTemplate;     public string pszWebViewTemplateVersion;     public string pszInfoTip;     public UInt32 cchInfoTip;     public IntPtr pclsid;     public UInt32 dwFlags;     public string pszIconFile;     public UInt32 cchIconFile;     public int iIconIndex;     public string pszLogo;     public UInt32 cchLogo; }

图片素材转ico图标​代码:

 public static bool ConvertImageToIcon(string origin, string destination, Size iconSize) {     if (iconSize.Width > 255 || iconSize.Height > 255)     {  return false;     }     Image image = new Bitmap(new Bitmap(origin), iconSize); //先读取已有的图片为bitmap,并缩放至设定大小     MemoryStream bitMapStream = new MemoryStream(); //存原图的内存流     MemoryStream iconStream = new MemoryStream(); //存图标的内存流     image.Save(bitMapStream, ImageFormat.Png); //将原图读取为png格式并存入原图内存流     BinaryWriter iconWriter = new BinaryWriter(iconStream); //新建二进制写入器以写入目标图标内存流     /      * 下面是根据原图信息,进行文件头写入      */     iconWriter.Write((short)0);     iconWriter.Write((short)1);     iconWriter.Write((short)1);     iconWriter.Write((byte)image.Width);     iconWriter.Write((byte)image.Height);     iconWriter.Write((short)0);     iconWriter.Write((short)0);     iconWriter.Write((short)32);     iconWriter.Write((int)bitMapStream.Length);     iconWriter.Write(22);     //写入图像体至目标图标内存流     iconWriter.Write(bitMapStream.ToArray());     //保存流,并将流指针定位至头部以Icon对象进行读取输出为文件     iconWriter.Flush();     iconWriter.Seek(0, SeekOrigin.Begin);     Stream iconFileStream = new FileStream(destination, FileMode.Create);     Icon icon = new Icon(iconStream);     icon.Save(iconFileStream); //储存图像     /      * 下面开始释放资源      */     iconFileStream.Close();     iconWriter.Close();     iconStream.Close();     bitMapStream.Close();     icon.Dispose();     image.Dispose();     return File.Exists(destination); }

 

有分的来这下:[C#]自定义修改文件夹颜色及图标-C#文档类资源-CSDN下载

没分的来这下:

链接:https://pan.baidu.com/s/1p5J8gnA18uZj6fQTQEtacA

提取码:ihl1

海量搞笑GIF动态图片