Public Class Form1 Private myImages As New List(Of Bitmap) Private points As New List(Of Point) Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load '画像のロード(画像は先にメモリ上に読み込んでおく) myImages.Add(New Bitmap("C:\Test\Sample1.bmp")) myImages.Add(New Bitmap("C:\Test\Sample2.bmp")) myImages.Add(New Bitmap("C:\Test\Sample3.bmp")) '初期設定 For i = 0 To myImages.Count - 1 '白を透明化 myImages(i).MakeTransparent(Color.White) '初期位置は(0,0) points.Add(New Point(0, 0)) Next 'この段階で3つの画像は座標(0,0)に重なって表示されます。 End Sub Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click '▼対象の画像を決定 '「リストボックスで選択されているパスの画像」ということですが、 'ここでは[Ctrl]キーか、[Alt]キーかが押されているかいないかで判定しています。 '仕様に応じて対象の画像の決定方法は適宜変更してください。 Dim targetIndex As Integer Select Case Control.ModifierKeys Case Keys.Control 'Controlキーが押されている場合は0番目が対象 targetIndex = 0 Case Keys.Alt 'Altキーが押されている場合は1番目が対象 targetIndex = 1 Case Else '何も押されていない場合は2番目が対象 targetIndex = 2 End Select '対象の画像の座標を現在のマウスの座標にセット points(targetIndex) = PictureBox1.PointToClient(System.Windows.Forms.Cursor.Position) '※この段階では座標がセットされただけで、画像は描画していない。 'PictureBox1に再描画を指示 PictureBox1.Invalidate() End Sub Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint '現在セットされている座標にそれぞれの画像を描画 For i = 0 To myImages.Count - 1 e.Graphics.DrawImage(myImages(i), points(i)) Next 'なお、再描画時にはそれまでの描画内容はすべてクリアされているので、 '以前に描画した画像を消すような処理は必要ない。 End Sub End Class