投稿者 永字  (社会人) 投稿日時 2008/9/29 06:04:12
初めまして、VB初心者の永字と申します。
現在VB上で、PictureBox上に画像を表示するプログラムを作っています。
仕様としましては。

1.Form上にPictureBoxを配置。
2.画像名と画像パスを設定し、10個までリストボックスで管理。
3.PictureBoxをクリックすると、クリックした位置にリストボックスで選択されているパスの画像を表示。
4.PictureBoxの他の座標をクリックした時、表示する画像が既にPictureBox上に存在する場合は、その画像が移動する。

というものです。

    Private Sub mapBox_MouseClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mapBox.MouseClick
        '白を透明色として、画像の読み込み
        Dim bmp As Bitmap = New Bitmap(iPath.Text)
        bmp.MakeTransparent(Color.White)

        'mapBoxのGraphicsオブジェクトの作成
        Dim g As Graphics = mapBox.CreateGraphics()
        '表示
        g.DrawImage(bmp, mapBox.PointToClient(System.Windows.Forms.Cursor.Position).X, mapBox.PointToClient(System.Windows.Forms.Cursor.Position).Y)
        'オブジェクトを解放
        g.Dispose()
        bmp.Dispose()
    End Sub



mapBox:表示領域のPictureBox
iPath:リストボックスで選択されている画像のパス

このソースで仕様の3までは出来たのですが、これではクリックする度に新しい画像を描画してしまい、既存の画像の移動を行う事が出来ません。

描画されている画像の位置などを管理するにはどのようにすれば良いのでしょうか?

よろしくお願い致します。