internal override void DrawItemContent(Graphics g, Rectangle bounds, ImageListViewItem item) { if (_thumbnailSizeInited == false) { SizeF headerSize = g.MeasureString(item.Header, Theme.ItemHeaderFont); _headerHeight = (int)Math.Ceiling(headerSize.Height); int width = LayoutManager.ItemSize.Width - _itemPadding.Width * 2; int height = LayoutManager.ItemSize.Height - _itemPadding.Height * 3 - _headerHeight; _thumbnailSize = new Size(width, height); _thumbnailSizeInited = true; } Image img = null; if (_thumbnailsCache.Container(item)) { img = _thumbnailsCache.GetThumbnail(item); } else { img = DrawingTool.GetScaleImage(item.Image, _thumbnailSize); _thumbnailsCache.AddThumbnail(item, img); } if (img != null) { Rectangle pos = DrawingTool.GetSizedImageBounds(img, new Rectangle(bounds.Location + _itemPadding, _thumbnailSize)); g.DrawImage(img, pos); if (Math.Min(pos.Width, pos.Height) > 32) { using (Pen pOuterBorder = new Pen(Theme.ImageOuterBorderColor)) { g.DrawRectangle(pOuterBorder, pos); } if (System.Math.Min(_thumbnailSize.Width, _thumbnailSize.Height) > 32) { using (Pen pInnerBorder = new Pen(Theme.ImageInnerBorderColor)) { g.DrawRectangle(pInnerBorder, Rectangle.Inflate(pos, -1, -1)); } } } } _headerBounds = new Rectangle(); _headerBounds.X = _itemPadding.Width; _headerBounds.Y = LayoutManager.ItemSize.Height - _headerHeight - _itemPadding.Height; _headerBounds.Width = _thumbnailSize.Width; _headerBounds.Height = _headerHeight; _headerBounds.Offset(bounds.Location); using (SolidBrush brush = new SolidBrush(Theme.ItemHeaderColor)) { g.DrawString(item.Header, Theme.ItemHeaderFont, brush, _headerBounds, _itemHeaderStringFormat); } }