using
System;
using
System.Collections.Generic;
using
System.ComponentModel;
using
System.Data;
using
System.Drawing;
using
System.Linq;
using
System.Text;
using
System.Windows.Forms;
namespace
SimpleDemo
{
public
partial
class
frmDrawItem : Form
{
public
frmDrawItem()
{
InitializeComponent();
//
指定繪製模式,這項必須指定爲,OwnerDrawFixed,OwnerDrawVariable
//
Normal 由操做系統繪製,而且元素大小都相等。
//
OwnerDrawFixed 手動繪製的,而且元素大小都相等。
//
OwnerDrawVariable 手動繪製,元素大小可能不相等。
comboBox2.DrawMode
=
DrawMode.OwnerDrawFixed;
}
//
重繪項事件
private
void
comboBox2_DrawItem(
object
sender, DrawItemEventArgs e)
{
//
獲取要在其上繪製項的圖形表面
Graphics g
=
e.Graphics;
//
獲取表示所繪製項的邊界的矩形
System.Drawing.Rectangle rect
=
e.Bounds;
//
定義要繪製到控件中的圖標圖像
Image ico
=
Image.FromFile(
"
head.png
"
);
//
定義字體對象
System.Drawing.Font font
=
new
System.Drawing.Font(
new
FontFamily(
"
宋體
"
),
12
);
if
(e.Index
>=
0
)
{
//
得到當前Item的文本
string
tempString
=
comboBox2.Items[e.Index].ToString();
//
若是當前項是沒有狀態的普通項
if
(e.State
==
DrawItemState.None)
{
//
在當前項圖形表面上劃一個矩形
g.FillRectangle(
new
SolidBrush(Color.FromArgb(
200
,
230
,
255
)), rect);
//
在當前項圖形表面上劃上圖標
g.DrawImage(ico,
new
Point(rect.Left, rect.Top));
//
在當前項圖形表面上劃上當前Item的文本
g.DrawString(tempString, font,
new
SolidBrush(Color.Black), rect.Left
+
ico.Size.Width, rect.Top);
//
將繪製聚焦框
e.DrawFocusRectangle();
}
else
{
e.Graphics.FillRectangle(
new
SolidBrush(Color.LightBlue), rect);
g.DrawImage(ico,
new
Point(rect.Left, rect.Top));
g.DrawString(tempString, font,
new
SolidBrush(Color.Black), rect.Left
+
ico.Size.Width, rect.Top);
e.DrawFocusRectangle();
}
}
}
}
}