2012-08-01 77 views
2

我使用VB.net列表視圖中的低質量縮略圖VB.net

我使用ListView查看項目左側的50 * x縮略圖(.jpg)。

但是,而不是32位高品質的縮略圖,ListView降低他們到8位或16位(不確定)。

下面的代碼

Private Sub afterprocessed() 
    ListView1.Items.Clear() 
    Dim imlTemp As New ImageList 
    Dim dirFiles() As String = IO.Directory.GetFiles("backend\communicate\thumbnails") 
    Dim _imgList As New ImageList 
    Dim imgSize As New Size 
    imgSize.Width = 50 
    ListView1.SmallImageList = _imgList 
    Dim count As Integer = 0 
    Dim item As New ListViewItem 
    For Each dirFile As String In dirFiles 
     Dim imgFilename As String = IO.Path.GetFileNameWithoutExtension(dirFile) 
     Dim img As New System.Drawing.Bitmap(dirFile) 
     Dim imgImage As Image = Image.FromFile(dirFile) 
     'Dim imgHeight As Integer 
     'imgHeight = imgImage.Height 
     imgSize.Height = imgImage.Height 
     _imgList.ImageSize = imgSize 
     _imgList.Images.Add(img.Clone) 
     ListView1.Items.Add(imgFilename, count) 
     count += 1 
    Next 
End Sub 

,質量noticably低。與原始JPG相比

有什麼建議嗎?我非常感謝它:D

+0

你可以發佈原始和低質量版本的屏幕截圖嗎? – 2012-08-01 11:29:23

回答

0

我有一個類似的問題一次,我發現它是由於使用ImageList.ImageSize方法,似乎使用一個不好的調整大小算法造成的。我解決了這個問題,確保在加載它之前,我使用的所有圖像在磁盤上已經是正確的大小。但是,如果這不是您的選擇,那麼 之前將它們添加到ImageList應該不是太難。

+0

謝謝!我完全明白你的意思。但是,我應該改變列表視圖*添加時不調整大小?再次感謝:D – arter97 2012-08-05 08:42:00

+0

這不是'ListView',而是'ImageList'這就是問題所在。在添加圖像之前先獲取圖像大小*,這樣就不必使用ImageSize方法。 – Antagony 2012-08-06 21:10:06

0

你需要這個。

this.ListView1.SmallImageList.ColorDepth = ColorDepth.Depth32Bit;