为了让程序更具个性,有时候我们需要在ComboBox中绘制图形。

作者:Zealot
为了让程序更具个性,有时候我们需要在ComboBox中绘制图形。效果如图所示。

在ComboBox中绘制图形       在ComboBox中绘制图形

在ComboBox中绘制图形

代码如下:

在ComboBox中绘制图形using System;
在ComboBox中绘制图形
using System.Collections.Generic;
在ComboBox中绘制图形
using System.ComponentModel;
在ComboBox中绘制图形
using System.Data;
在ComboBox中绘制图形
using System.Drawing;
在ComboBox中绘制图形
using System.Drawing.Drawing2D;
在ComboBox中绘制图形
using System.Text;
在ComboBox中绘制图形
using System.Windows.Forms;
在ComboBox中绘制图形
在ComboBox中绘制图形partial 
class Form2 : Form
在ComboBox中绘制图形在ComboBox中绘制图形
在ComboBox中绘制图形{
在ComboBox中绘制图形    
public Form2()
在ComboBox中绘制图形在ComboBox中绘制图形    
在ComboBox中绘制图形{
在ComboBox中绘制图形        InitializeComponent();
在ComboBox中绘制图形        
this.comboBox1.Items.Add("Solid Brush");
在ComboBox中绘制图形        
this.comboBox1.Items.Add("Horizontal");
在ComboBox中绘制图形        
this.comboBox1.Items.Add("Min");
在ComboBox中绘制图形        
this.comboBox1.Items.Add("Vertical");
在ComboBox中绘制图形        
this.comboBox1.Items.Add("Forward Diagonal");
在ComboBox中绘制图形        
this.comboBox1.Items.Add("Backward Diagonal");
在ComboBox中绘制图形        
this.comboBox1.Items.Add("Cross");
在ComboBox中绘制图形        
this.comboBox1.Items.Add("Large Grid");
在ComboBox中绘制图形        
this.comboBox1.Items.Add("Max");
在ComboBox中绘制图形        
this.comboBox1.Items.Add("Diagonal Cross");
在ComboBox中绘制图形
在ComboBox中绘制图形        
this.comboBox1.SelectedIndex = 0;
在ComboBox中绘制图形        
this.comboBox1.DrawMode = DrawMode.OwnerDrawVariable;
在ComboBox中绘制图形        
this.comboBox1.DropDownStyle = ComboBoxStyle.DropDownList;
在ComboBox中绘制图形        
this.comboBox1.DropDownWidth = 190;
在ComboBox中绘制图形        
this.comboBox1.DropDownHeight = 300;
在ComboBox中绘制图形        
this.comboBox1.MeasureItem += new MeasureItemEventHandler(comboBox1_MeasureItem);
在ComboBox中绘制图形        
this.comboBox1.DrawItem += new DrawItemEventHandler(comboBox1_DrawItem);
在ComboBox中绘制图形    }

在ComboBox中绘制图形
在ComboBox中绘制图形    
void comboBox1_MeasureItem(object sender, MeasureItemEventArgs e)
在ComboBox中绘制图形在ComboBox中绘制图形    
在ComboBox中绘制图形{
在ComboBox中绘制图形        
string displayText = this.comboBox1.Items[e.Index].ToString();
在ComboBox中绘制图形        SizeF stringSize 
= e.Graphics.MeasureString(displayText, this.Font);
在ComboBox中绘制图形        e.ItemHeight 
= (int)stringSize.Height;
在ComboBox中绘制图形        e.ItemWidth 
= (int)stringSize.Width;
在ComboBox中绘制图形    }

在ComboBox中绘制图形
在ComboBox中绘制图形
在ComboBox中绘制图形    
private String RemoveSpaces(String str1)
在ComboBox中绘制图形在ComboBox中绘制图形    
在ComboBox中绘制图形{
在ComboBox中绘制图形        
int start;
在ComboBox中绘制图形        
int at;
在ComboBox中绘制图形        
int end;
在ComboBox中绘制图形
在ComboBox中绘制图形        String str2 
= String.Copy(str1);
在ComboBox中绘制图形
在ComboBox中绘制图形        at 
= 0;
在ComboBox中绘制图形        end 
= str2.Length - 1;
在ComboBox中绘制图形        start 
= 0;
在ComboBox中绘制图形
在ComboBox中绘制图形        
while ((start <= end) && (at > -1))
在ComboBox中绘制图形在ComboBox中绘制图形        
在ComboBox中绘制图形{
在ComboBox中绘制图形            
// start+count must be a position within str2.
在ComboBox中绘制图形
            at = str2.IndexOf(" ", start);
在ComboBox中绘制图形            
if (at == -1break;
在ComboBox中绘制图形            str2 
= str2.Remove(at, 1);
在ComboBox中绘制图形            start 
= at + 1;
在ComboBox中绘制图形        }

在ComboBox中绘制图形
在ComboBox中绘制图形        
return str2;
在ComboBox中绘制图形    }

在ComboBox中绘制图形
在ComboBox中绘制图形    
private HatchStyle getHatchStyle(String s)
在ComboBox中绘制图形在ComboBox中绘制图形    
在ComboBox中绘制图形{
在ComboBox中绘制图形        String str 
= RemoveSpaces(s);
在ComboBox中绘制图形        
return (HatchStyle)Enum.Parse(typeof(HatchStyle), str, true);
在ComboBox中绘制图形    }

在ComboBox中绘制图形
在ComboBox中绘制图形    
void comboBox1_DrawItem(object sender, DrawItemEventArgs e)
在ComboBox中绘制图形在ComboBox中绘制图形    
在ComboBox中绘制图形{
在ComboBox中绘制图形        
//throw new NotImplementedException();
在ComboBox中绘制图形
        e.DrawBackground();
在ComboBox中绘制图形
在ComboBox中绘制图形        Rectangle r 
= e.Bounds;
在ComboBox中绘制图形
在ComboBox中绘制图形        
if (e.Index != -1)
在ComboBox中绘制图形在ComboBox中绘制图形        
在ComboBox中绘制图形{
在ComboBox中绘制图形            
if (e.Index > 0)
在ComboBox中绘制图形在ComboBox中绘制图形            
在ComboBox中绘制图形{
在ComboBox中绘制图形                Rectangle rd 
= r;
在ComboBox中绘制图形                rd.Width 
= rd.Left + 25;
在ComboBox中绘制图形
在ComboBox中绘制图形                Rectangle rt 
= r;
在ComboBox中绘制图形                r.X 
= rd.Right;
在ComboBox中绘制图形
在ComboBox中绘制图形                
string displayText = this.comboBox1.Items[e.Index].ToString();
在ComboBox中绘制图形                HatchStyle hs 
= this.getHatchStyle(displayText);
在ComboBox中绘制图形
在ComboBox中绘制图形                
using (HatchBrush b = new HatchBrush(hs,e.ForeColor,e.BackColor))
在ComboBox中绘制图形在ComboBox中绘制图形                
在ComboBox中绘制图形{
在ComboBox中绘制图形                    e.Graphics.FillRectangle(b,rd);
在ComboBox中绘制图形                }

在ComboBox中绘制图形
在ComboBox中绘制图形                StringFormat sf 
= new StringFormat();
在ComboBox中绘制图形                sf.Alignment 
= StringAlignment.Near;
在ComboBox中绘制图形
在ComboBox中绘制图形                
using(SolidBrush sb = new SolidBrush(Color.White))
在ComboBox中绘制图形在ComboBox中绘制图形                
在ComboBox中绘制图形{
在ComboBox中绘制图形                        
if((e.State & DrawItemState.Focus) == 0)
在ComboBox中绘制图形在ComboBox中绘制图形                        
在ComboBox中绘制图形{
在ComboBox中绘制图形                            sb.Color 
= SystemColors.Window;
在ComboBox中绘制图形                            e.Graphics.FillRectangle(sb,r);
在ComboBox中绘制图形                            sb.Color 
= SystemColors.WindowText;
在ComboBox中绘制图形                            e.Graphics.DrawString(displayText,
this.Font,sb,r,sf);
在ComboBox中绘制图形                        }

在ComboBox中绘制图形                        
else
在ComboBox中绘制图形在ComboBox中绘制图形                        
在ComboBox中绘制图形{
在ComboBox中绘制图形                            sb.Color 
= SystemColors.Highlight;
在ComboBox中绘制图形                            e.Graphics.FillRectangle(sb,r);
在ComboBox中绘制图形                            sb.Color 
= SystemColors.HighlightText;
在ComboBox中绘制图形                            e.Graphics.DrawString(displayText,
this.Font,sb,r,sf);
在ComboBox中绘制图形                        }

在ComboBox中绘制图形                }

在ComboBox中绘制图形            }
   // if (e.Index > 0)
在ComboBox中绘制图形
            else
在ComboBox中绘制图形在ComboBox中绘制图形            
在ComboBox中绘制图形{
在ComboBox中绘制图形                
using(SolidBrush sb = new SolidBrush(Color.White))
在ComboBox中绘制图形在ComboBox中绘制图形                
在ComboBox中绘制图形{
在ComboBox中绘制图形                    
if((e.State & DrawItemState.Focus) == 0)
在ComboBox中绘制图形在ComboBox中绘制图形                    
在ComboBox中绘制图形{
在ComboBox中绘制图形                        sb.Color 
= SystemColors.Window;
在ComboBox中绘制图形                        e.Graphics.FillRectangle(sb,e.Bounds);
在ComboBox中绘制图形                        
string displayText = this.comboBox1.Items[e.Index].ToString();
在ComboBox中绘制图形                        sb.Color 
= SystemColors.WindowText;
在ComboBox中绘制图形                        e.Graphics.DrawString(displayText,
this.Font,sb,e.Bounds);
在ComboBox中绘制图形                    }

在ComboBox中绘制图形                    
else
在ComboBox中绘制图形在ComboBox中绘制图形                    
在ComboBox中绘制图形{
在ComboBox中绘制图形                        sb.Color 
= SystemColors.Highlight;
在ComboBox中绘制图形                        e.Graphics.FillRectangle(sb,e.Bounds);
在ComboBox中绘制图形                        
string displayText = this.comboBox1.Items[e.Index].ToString();
在ComboBox中绘制图形                        sb.Color 
= SystemColors.HighlightText;
在ComboBox中绘制图形                        e.Graphics.DrawString(displayText,
this.Font,sb,e.Bounds);
在ComboBox中绘制图形                    }

在ComboBox中绘制图形                }

在ComboBox中绘制图形            }

在ComboBox中绘制图形            e.DrawFocusRectangle();
在ComboBox中绘制图形        }

在ComboBox中绘制图形    }

相关文章:

  • 2021-06-20
  • 2022-12-23
  • 2021-12-07
  • 2021-07-22
  • 2022-12-23
  • 2021-12-15
  • 2021-07-16
猜你喜欢
  • 2022-12-23
  • 2021-11-22
  • 2021-09-07
  • 2019-02-01
  • 2021-11-24
  • 2021-11-05
相关资源
相似解决方案