2016-05-06 7 views
1

私は半透明の画像を含む画像を持っています。私はListViewにバインドするためにこれを使用しています。Semi-Transparent Imagesの使用方法ImageListの中で

画像をImageListに追加すると(実行時に実行されます)、透明部分は灰色に変わります。これは、同じ画像を示しているピクチャにした後、実際の画像がメモリ内に作成されているピクチャ

にイメージリストを介して直接ロードされ、このコードは、述べたように出力を与える例として

右に左2上
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:

enter image description here

私はImageLを取得できますかPictureBox1に画像を出力するist?

+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)です。 –

関連する問題