- PR -

ImageListとListViewを使用したサムネイル表示

1
投稿者投稿内容
むっく
会議室デビュー日: 2007/11/03
投稿数: 18
投稿日時: 2008-03-11 15:35
VB2005の画像ファイルをBitmapオブジェクトに読み込み、
そのオブジェクトをImageListに追加、さらにListViewに追加することで
サムネイルリストみたいなものを作るサンプルを参考にしています。

私の場合は、画像ファイルからBitmapオブジェクトを作成するのではなく、
Bitmapオブジェクトを自分で作成し、そのオブジェクトからGrapicsオブジェクトを
作成し、図形を描画して、それをImageListに追加しています。
サンプルプログラムでは、正常にサムネイルを作成し、表示されるのですが、
自分で図形描画を行うと、うまく表示されません。
どうやら、ImageListへの追加がうまくいっていないようです。
何かよい解決策があれば、教えてください。よろしくお願いします。
下記にソースを添付します。

-----
' 幅w、高さhのImageオブジェクトを作成
Function createThumbnail(ByVal image As Image, ByVal w As Integer, ByVal h As Integer) As Image
Dim canvas As New Bitmap(w, h)

Dim g As Graphics = Graphics.FromImage(canvas)
g.FillRectangle(New SolidBrush(Color.Blue), 0, 0, w, h)

Dim fw As Double = CDbl(w) / CDbl(image.Width)
Dim fh As Double = CDbl(h) / CDbl(image.Height)
Dim scale As Double = Math.Min(fw, fh)

Dim w2 As Integer = CInt(image.Width * scale)
Dim h2 As Integer = CInt(image.Height * scale)

g.DrawImage(image, (w - w2) \ 2, (h - h2) \ 2, w2, h2)
g.Dispose()
Return canvas
End Function

' ButtonのClickイベントのハンドラ
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim width As Integer = 100
Dim height As Integer = 80
ImageList1.ImageSize = New Size(width, height)
ListView1.LargeImageList = ImageList1

    '図形描画用Bitmap
Dim bmp As New Bitmap(1006, 680)
Dim gra As Graphics = Graphics.FromImage(bmp)
gra.FillRectangle(New SolidBrush(Color.Red), 0, 0, 1006, 680)
gra.Dispose()
Dim thumbnail As Image = createThumbnail(bmp, width, height)

ImageList1.Images.Add(thumbnail)
ListView1.Items.Add("test")
End Sub
-----
1

スキルアップ/キャリアアップ(JOB@IT)