public virtual void DrawItemImage(IListControl parent, ListControlDrawItemEventArgs e) { if (e.Image == null) { return; } Size size = e.Image.Size; e.Graphics.DrawImage(e.Image, e.Bounds.Left + e.Offset, e.Bounds.Top + (e.Bounds.Height - size.Height) / 2, size.Width, size.Height); e.Offset += size.Width + parent.Padding.Left; }
public virtual void DrawItemBackground(IListControl parent, ListControlDrawItemEventArgs e) { using ( Brush brush = new SolidBrush(!EnumExtensions.HasFlag(e.State, DrawItemState.HotLight) || EnumExtensions.HasFlag(e.State, DrawItemState.Selected) || !AllowHotTrack ? (!parent.Enabled || EnumExtensions.HasFlag(e.State, DrawItemState.Selected) ? (!parent.Enabled || !parent.IsDroppedDown && parent.HideSelection && (!EnumExtensions.HasFlag(e.State, DrawItemState.Focus) && parent.FullRowSelect) ? SystemColors.Control : parent.HighlightBackColor) : parent.BackColor) : parent.HotTrackColor)) e.Graphics.FillRectangle(brush, e.Bounds); }
public virtual void DrawItemText(IListControl parent, ListControlDrawItemEventArgs e) { int num = Math.Max(2, parent.Padding.Right); int width = e.Bounds.Width - (e.Offset + num); TextFormatFlags flags = GetFlags(parent, e.Item.Text); var rectangle = new Rectangle(e.Bounds.X + e.Offset, e.Bounds.Y, TextRenderer.MeasureText(e.Graphics, e.Item.Text, e.Font, new Size(width, e.Bounds.Height)).Width + num, e.Bounds.Height); if (rectangle.Width > width) { rectangle.Width = width; } Color foreColor; if (EnumExtensions.HasFlag(e.State, DrawItemState.Selected)) { Color color; if (!parent.IsDroppedDown && parent.HideSelection && !EnumExtensions.HasFlag(e.State, DrawItemState.Focus)) { color = SystemColors.Control; foreColor = parent.ForeColor; } else { color = parent.HighlightBackColor; foreColor = parent.HighlightForeColor; } if (!parent.FullRowSelect) { using (Brush brush = new SolidBrush(color)) e.Graphics.FillRectangle(brush, rectangle); } } else { foreColor = parent.Enabled ? parent.ForeColor : SystemColors.GrayText; } TextRenderer.DrawText(e.Graphics, e.Item.Text, e.Font, rectangle, foreColor, flags); if (!EnumExtensions.HasFlag(e.State, DrawItemState.Focus) || EnumExtensions.HasFlag(e.State, DrawItemState.NoFocusRect)) { return; } ControlPaint.DrawFocusRectangle(e.Graphics, parent.FullRowSelect ? e.Bounds : rectangle); }
protected override void OnDrawItem(DrawItemEventArgs e) { IListControlRenderer renderer = GetRenderer(); ImageComboItem imageComboItem = e.Index >= 0 ? (Items[e.Index] is ImageComboItem ? (ImageComboItem)Items[e.Index] : new ImageComboItem(Items[e.Index].ToString())) : new ImageComboItem(Text); var e1 = new ListControlDrawItemEventArgs(e, imageComboItem) { Image = GetItemImage(imageComboItem), Offset = Padding.Left }; renderer.DrawItemBackground(this, e1); renderer.DrawItemImage(this, e1); renderer.DrawItemText(this, e1); }
protected override void OnDrawItem(DrawItemEventArgs e) { IListControlRenderer renderer = GetRenderer(); ImageComboItem imageComboItem = GetItem(e.Index); var e1 = new ListControlDrawItemEventArgs(e, imageComboItem) { Image = GetItemImage(imageComboItem), Offset = Padding.Left }; if (HoverIndex == e.Index) { e1.State |= DrawItemState.HotLight; } renderer.DrawItemBackground(this, e1); renderer.DrawItemImage(this, e1); renderer.DrawItemText(this, e1); }