2016-05-06 3 views
1

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

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

В качестве примера это показывает то же изображение загружается непосредственно в 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

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

+0

Это хорошо работает для меня (с помощью C#). Вы работаете в Windows? (Раньше у меня были аналогичные проблемы в Linux.) – KAI

ответ

2

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

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 
} 
+0

Кажется, это работает для меня. Интересно, что фактический цвет - это «ARGB (150, 254, 254, 254)», но цвет, который я использую в качестве наложения, - это «ARGB (150, 255, 255, 255)», который я пробовал –

Смежные вопросы