예제 #1
0
        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);
        }
예제 #2
0
        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)); }
                }
            }
        }