2

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

そして、品質は著しく低いです。元のJPGと比較

何かアドバイス?よろしくお願いします:D

4

2 に答える 2

1

あなたはこれを必要とします。

this.ListView1.SmallImageList.ColorDepth = ColorDepth.Depth32Bit;
于 2012-12-02T16:21:53.400 に答える
0

ImageList.ImageSizeあるとき同様の問題が発生しましたが、サイズ変更アルゴリズムが不十分な方法を使用したことが原因であることがわかりました。使用したすべての画像が、ロードする前にディスク上ですでに正しいサイズであることを確認することで、問題を解決しました。ただし、それが選択肢にない場合は、ImageListに追加する前にサイズ を変更するのはそれほど難しくありません。

于 2012-08-01T11:25:19.587 に答える