[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