用颜色填充下拉框

 

用颜色填充下拉框(C#

代码如下:

 1        private void CtrGifType_Load(object sender, EventArgs e)
 2        {
 3            //透明色初始化设置
 4            cmbTransparence.DrawMode = DrawMode.OwnerDrawFixed;
 5            cmbTransparence.DropDownStyle = ComboBoxStyle.DropDownList;
 6            cmbTransparence.DrawItem += new DrawItemEventHandler(cmbTransparence_DrawItem);
 7            cmbTransparence.ItemHeight = 18;
 8            cmbTransparence.BeginUpdate();
 9            cmbTransparence.Items.Clear();
10            //循环遍历添加每一项
11            foreach (PropertyInfo proinfo in typeof(Color).GetProperties(BindingFlags.Public | BindingFlags.Static))
12            {
13                cmbTransparence.Items.Add(proinfo.Name);
14            }

15            cmbTransparence.EndUpdate();
16        }

17
18        private void cmbTransparence_DrawItem(object sender, DrawItemEventArgs e)
19        {
20            if (e.Index < 0return;
21
22            e.DrawBackground();
23
24            //得到绘制的矩形框
25            Rectangle rect = new Rectangle(4, e.Bounds.Top + 2, e.Bounds.Height + 10, e.Bounds.Height - 4);
26
27            string colorName = cmbTransparence.Items[e.Index].ToString();
28
29            //定义单色的画笔
30            SolidBrush b = new SolidBrush(Color.FromName(colorName));
31            //内部颜色填充
32            e.Graphics.FillRectangle(b, rect);
33            e.Graphics.DrawRectangle(Pens.Black, rect);
34
35            //设置显示的字体
36            Font pFont = new Font(FontFamily.GenericSansSerif, 10, FontStyle.Regular);
37
38            //在指定的矩形内绘制文本
39            e.Graphics.DrawString(colorName, pFont, Brushes.Black, new Rectangle(e.Bounds.X + rect.Width + 4, e.Bounds.Y, e.Bounds.Width, e.Bounds.Height));
40            //在指定的边界范围内绘制聚集框
41            e.DrawFocusRectangle();
42        }
原文地址:https://www.cnblogs.com/3echo/p/883169.html