Private tabArea As Rectangle
Private tabTextArea As RectangleF
Private Sub Form1_Load( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase .Load
Me .TabControl1.DrawMode = TabDrawMode.OwnerDrawFixed ' 设置用户绘制方式
Me .TabControl1.Alignment = TabAlignment.Right ' 设置 TAB 项右对齐布局
'TabControl1.SizeMode = TabSizeMode.Fixed ‘设置 TAB 项大小的方式(全都一样大小)
'TabControl1.ItemSize = New Size(150, 20) ' 设置大小
End Sub
Private Sub TabControl1_DrawItem( ByVal sender As Object , ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles TabControl1.DrawItem
tabArea = TabControl1.GetTabRect(e.Index) ' 主要是做个转换来获得 TAB 项的 RECTANGELF
tabTextArea = RectangleF.op_Implicit(TabControl1.GetTabRect(e.Index))
Dim g As Graphics = e.Graphics
Dim sf As New StringFormat() ' 封装文本布局信息
sf.LineAlignment = StringAlignment.Center
sf.Alignment = StringAlignment.Center
Dim p As New Pen(Color.Blue) ' 绘制边框的画笔
Dim font As New Font("Arial", 10.0F )
Dim brush As New SolidBrush(Color.Red)
g.DrawRectangle(p, tabArea) ' 绘制边框
' 绘制文字
g.DrawString( CType (sender, TabControl).TabPages(e.Index).Text, font, brush, tabTextArea, sf)
End Sub