protected Bitmap GetFileBasedFSBitmap(string ext, IconSize size) { string lookup = UCUtils.GetProgramPath(); Bitmap folderBitmap = KeyToBitmap(lookup, size); if (ext != "") { ext = ext.Substring(0, 1).ToUpper() + ext.Substring(1).ToLower(); using (Graphics g = Graphics.FromImage(folderBitmap)) { g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias; Font font = new Font("Comic Sans MS", folderBitmap.Width / 5, System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic); float height = g.MeasureString(ext, font).Height; float rightOffset = folderBitmap.Width / 5; if (size == IconSize.small) { font = new Font("Arial", 5, System.Drawing.FontStyle.Bold); height = g.MeasureString(ext, font).Height; rightOffset = 0; } g.DrawString(ext, font, System.Drawing.Brushes.Black, new RectangleF(0, folderBitmap.Height - height, folderBitmap.Width - rightOffset, height), new StringFormat(StringFormatFlags.DirectionRightToLeft)); } } return(folderBitmap); }
protected override Bitmap KeyToBitmap(string key, IconSize size) { bool isDiskFolder = key.EndsWith(":\\"); if (IsSpecialFolder(key)) { return(GetFileIcon(FileSystemInfoExA.FromStringParse(key).PIDL.Ptr, size)); } else if (fileBasedFSFilter.IndexOf(key) != -1) { return(GetFileBasedFSBitmap(key, size)); } else if (key.StartsWith(".")) //Extension { return(GetFileIcon(key, size)); } else { switch (size) { case IconSize.thumbnail: case IconSize.jumbo: return(loadJumbo(key, isDiskFolder)); case IconSize.extraLarge: _imgList.ImageListSize = SysImageListSize.extraLargeIcons; return(_imgList.Icon(_imgList.IconIndex(key, isDiskFolder)).ToBitmap()); //case IconSize.large : // _imgList.ImageListSize = SysImageListSize.largeIcons; // return _imgList.Icon(_imgList.IconIndex(key, isDiskFolder)).ToBitmap(); //case IconSize.small : // _imgList.ImageListSize = SysImageListSize.smallIcons; // return _imgList.Icon(_imgList.IconIndex(key, isDiskFolder)).ToBitmap(); default: try { return(GetFileIcon(key, size)); } catch { return(KeyToBitmap(UCUtils.GetProgramPath(), size)); } } } }