Создание значков списка на лету на VB.NET? - PullRequest
2 голосов
/ 08 августа 2011

Возможно ли это? Я хочу передать свой цвет в качестве параметра и получить изображение (например, прямоугольник).

Public Function createIcon(ByVal c As Color) As Bitmap
    Dim g As Graphics
    Dim Brush As New SolidBrush(c)
    g.FillRectangle(Brush, New Rectangle(0, 0, 20, 20))
    Dim bmp As New Bitmap(20, 20, g)
    Return bmp
End Function

Я попробовал этот путь и не смог добиться успеха.

Ответы [ 2 ]

1 голос
/ 21 августа 2011
  • Bitmap: холст (в памяти), содержащий изображение.
  • Graphics: набор инструментов, позволяющий рисовать на связанном холсте.

Имея это в виду, вот решение:

Public Function CreateIcon(ByVal c As Color, ByVal x As Integer, ByVal y As Integer) As Bitmap
    Dim icon As New Bitmap(x, y)

    Using g = Graphics.FromImage(icon)
        Using b As New SolidBrush(c)
            g.FillRectangle(b, New Rectangle(0, 0, 20, 20))
        End Using
    End Using

    Return icon
End Function

Блоки Using здесь просто служат для правильного распределения графических ресурсов (путем автоматического вызова их метода Dispose в конце блока). Для этого вам понадобится , иначе вы потеряете графические ресурсы.

0 голосов
/ 21 августа 2011

Хорошо, понял.Я собираюсь поделиться тем, что я сделал на всякий случай.

Public Function createIcon(ByVal c As Color, ByVal x As Integer, ByVal y As Integer) As Bitmap
    createIcon = New Bitmap(x, y)
    For i = 0 To x - 1
        For j = 0 To y - 1
            If i = 0 Or j = 0 Or i = x - 1 Or j = y - 1 Then
                createIcon.SetPixel(i, j, Color.Black)
            Else
                createIcon.SetPixel(i, j, c)
            End If
        Next
    Next
    Return createIcon
End Function

Эта функция даст вам цветной прямоугольник с черной рамкой.

...