private void cmbColor_DrawItem(object sender,
DrawItemEventArgs e)
{
ComboBox cmb = sender as ComboBox;
if (cmb == null) return;
if (e.Index < 0) return;
if (!(cmb
.Items[e
.Index] is Color
)) return; Color color = (Color)cmb.Items[e.Index];
// Dibujamos el fondo
e.DrawBackground();
// Creamos los objetos GDI+
Brush brush
= new SolidBrush
(color
); Pen forePen
= new Pen
(e
.ForeColor); Brush foreBrush
= new SolidBrush
(e
.ForeColor); // Dibujamos el borde del rectángulo
e.Graphics.DrawRectangle(
forePen,
new Rectangle
(e
.Bounds.Left + 2, e
.Bounds.Top + 2,
19,
e.Bounds.Size.Height - 4));
// Rellenamos el rectángulo con el Color seleccionado
// en la combo
e.Graphics.FillRectangle(brush,
new Rectangle
(e
.Bounds.Left + 3, e
.Bounds.Top + 3,
18,
e.Bounds.Size.Height - 5));
// Dibujamos el nombre del color
e.Graphics.DrawString(color.Name, cmb.Font,
foreBrush, e.Bounds.Left + 25, e.Bounds.Top + 2);
// Eliminamos objetos GDI+
brush.Dispose();
forePen.Dispose();
foreBrush.Dispose();
}