Как использовать полупрозрачные изображения в ImageList

63
6

У меня есть изображение, которое содержит полупрозрачные изображения. Затем я использую это для привязки к ListView.

Когда я добавляю изображения в ImageList (выполняется в Runtime), прозрачная часть становится серой.

В качестве примера показано, что одно и то же изображение загружается непосредственно в PictureBox, а затем через ImageList в PictureBox

Фактическое изображение создается в памяти, но этот код дает результат, как указано

    Dim tempFilename As String = Path.GetTempFileName
Dim client As New WebClient()
client.DownloadFile("http://s32.postimg.org/k2fdrw3wh/Semi.png", tempFilename)
Dim empIcon = Image.FromFile(tempFilename)

PictureBox1.BackColor = Color.White
PictureBox1.Image = empIcon

PictureBox2.BackColor = Color.White
Dim imglst As New ImageList With {.ImageSize = New Size(32, 32), .ColorDepth = ColorDepth.Depth32Bit, .TransparentColor = Color.White}
imglst.Images.Add(empIcon)
PictureBox2.Image = imglst.Images(0)

PictureBox1 слева 2 справа:

enter image description here

Как я могу получить ImageList для вывода изображения на PictureBox1?

спросил(а) 2021-01-19T12:42:21+03:00 6 месяцев назад
1
Решение
79

Получите прозрачность изображения:

Dim transColor = CType(empIcon, Bitmap).GetPixel(1, 1)

и установите его в ImageList:

Dim imglst As New ImageList With {
.ImageSize = New Size(32, 32),
.ColorDepth = ColorDepth.Depth32Bit,
.TransparentColor = transColor
}

ответил(а) 2021-01-19T12:42:21+03:00 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема