Как нарисовать изображение ImageList на пользовательском tabcontrol

Привет у меня есть пользовательский элемент управления вкладкой код onpaint можно увидеть ниже:

Dim B As New Bitmap(Width, Height)
    Dim G As Graphics = Graphics.FromImage(B)

    G.Clear(Color.FromArgb(46, 46, 46))

    For i = 0 To TabCount - 1


        Dim TabRectangle As Rectangle = GetTabRect(i)

        '27, 80, 116
        Dim brush = New SolidBrush(Color.FromArgb(255, CByte(46), CByte(46), CByte(46)))
        Dim brush2 = New SolidBrush(Color.FromArgb(255, CByte(30), CByte(30), CByte(30)))

        Dim fontbursh = Brushes.White
        Dim thefont = New Drawing.Font("Microsoft Sans Serif", 12, FontStyle.Regular)
        If i = SelectedIndex Then
            fontbursh = Brushes.White
            G.FillRectangle(brush2, TabRectangle)
            thefont = New Drawing.Font("Microsoft Sans Serif", 12, FontStyle.Regular)
            G.DrawString(TabPages(i).Text, thefont, Brushes.White, TabRectangle, New StringFormat With {.Alignment = StringAlignment.Far, .LineAlignment = StringAlignment.Center})
        Else
            fontbursh = Brushes.Gray
            G.FillRectangle(brush, TabRectangle)
            G.DrawString(TabPages(i).Text, thefont, Brushes.Gray, TabRectangle, New StringFormat With {.Alignment = StringAlignment.Far, .LineAlignment = StringAlignment.Center})

        End If

    Next

    e.Graphics.DrawImage(B.Clone, 0, 0)
    G.Dispose() : B.Dispose()

    MyBase.OnPaint(e)
End Sub

Как можно нарисовать назначенный индекс изображения из списка изображений на этих вкладках?

1 ответ

Решение

Я смог нарисовать изображения, используя следующий код:

 If (TabPages(i).ImageIndex >= 0) AndAlso (ImageList IsNot Nothing) AndAlso (Main.ImageList1.Images(TabPages(i).ImageIndex) IsNot Nothing) Then


            Dim img As Image = Main.ImageList1.Images(TabPages(i).ImageIndex)



            Dim rimage As New Rectangle(TabRectangle.X + 16, TabRectangle.Y, img.Width, img.Height)

            ' adjust rectangles


            rimage.Y += (TabRectangle.Height - img.Height) / 2


            ' draw icon
            G.DrawImage(img, rimage)


        End If
Другие вопросы по тегам