PowerTools PlusPak for Windows Forms 8.0J
タブのオーナー描画

タブの描画を独自に行う「オーナー描画」について説明します。

オーナー描画は、特定のGcTabControlコントロールにおいて、固定された外観を描画する場合の利用に適しています。一方、作成した描画の再利用や、他の外観と切り替えて使用するケースには不向きです。この場合は、「スキン機能」を利用します。

タブ範囲の描画は、マージンを除いたキャプション範囲に対して行われます。タブ範囲全体の描画を行う場合は、スキン機能を利用します。

下記の例では、DrawMode プロパティを OwnerDrawFixed に設定し、DrawItem イベント を使用して、オーナー描画を行います。

Private Sub Form1_Load(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles MyBase.Load
    ' オーナー描画を有効にします
    GcTabControl1.DrawMode = TabDrawMode.OwnerDrawFixed
    ' タブのサイズを調整します
    GcTabControl1.SizeMode = GrapeCity.Win.Containers.TabSizeMode.Fixed
    GcTabControl1.ItemSize = New Size(120, 25)
End Sub

Private Sub GcTabControl1_DrawItem(ByVal sender As Object, _
    ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles GcTabControl1.DrawItem
    Dim tabGraphic As Graphics = e.Graphics
    ' タブのテキストをグラデーションで塗りつぶします
    Dim gradation As New Drawing2D.LinearGradientBrush(e.Bounds, _
        Color.Purple, Color.Yellow, Drawing2D.LinearGradientMode.Horizontal)
    ' 文字列を描画します
    Dim fnt As New Font("Arial Black", 10, FontStyle.Bold)
    tabGraphic.DrawString(GcTabPage1.Text, fnt, gradation, 10, 5)
    tabGraphic.DrawString(GcTabPage2.Text, fnt, gradation, 130, 5)
    tabGraphic.DrawString(GcTabPage3.Text, fnt, gradation, 250, 5)
End Sub
private void Form1_Load(object sender, System.EventArgs e)
{
    // オーナー描画を有効にします
    gcTabControl1.DrawMode = TabDrawMode.OwnerDrawFixed;
    // タブのサイズを調整します
    gcTabControl1.SizeMode = GrapeCity.Win.Containers.TabSizeMode.Fixed;
    gcTabControl1.ItemSize = new Size(120, 25);
}

private void gcTabControl1_DrawItem(object sender, 
    System.Windows.Forms.DrawItemEventArgs e)
{
    Graphics tabGraphic = e.Graphics;
    // タブのテキストをグラデーションで塗りつぶします
    System.Drawing.Drawing2D.LinearGradientBrush gradation = 
        new System.Drawing.Drawing2D.LinearGradientBrush(e.Bounds,
        Color.Purple, Color.Yellow, System.Drawing.Drawing2D.LinearGradientMode.Horizontal);
    // 文字列を描画します
    Font fnt = new Font("Arial Black", 10, FontStyle.Bold);
    tabGraphic.DrawString(gcTabPage1.Text, fnt, gradation, 10, 5);
    tabGraphic.DrawString(gcTabPage2.Text, fnt, gradation, 130, 5);
    tabGraphic.DrawString(gcTabPage3.Text, fnt, gradation, 250, 5);
}

参照