投稿者 JUN  (社会人) 投稿日時 2009/2/6 01:47:27
はじめまして、JUNと申します。VB超初心者です。
趣味でペイントソフトをつくろうと思い、インターネットや本で勉強して以下のコードまでは理解できるようになりました。

Public Class Form1
    Private startX, starty, endx, endy As Integer
   
Private Sub paint_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles paint.MouseDown
        
     If e.Button = Windows.Forms.MouseButtons.Left Then
            startX = e.X
            startY = e.Y
      
        End If
    End Sub

  Private Sub paint_Mousemove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles paint.Mousemove
        
     If e.Button = Windows.Forms.MouseButtons.Left Then
       endx = e.X
            endy = e.Y
            paint.Invalidate()
        End If

    End Sub

    Private Sub paint_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles paint.Paint

        e.Graphics.DrawLine(Pens.Red, startX, starty, endx, endy)
    End Sub

注:PaintはPicturebox1です。

このコードだとマウスを動かしながら自由に視覚化した線を引くことはできるのですが、もう一回線を引くと前引いた線が消えてしまうのです。

いろんなサイトを見ましたがどこにも自分が求めている答えが見つからず困っています。(もしかしたら答えが載ってるサイトがあったかもしれませんが、自分のレベルでは理解できなかった可能性が大きいです;)

自分の考えではmauseupを追加し、mouseupしたときに描いた線をpaintに残しておく…みたいな風にやるのかなと考えていますが、やりかたがわかりません。


このような掲示板を利用するのは初めてなので聞き方や、マナーなどよくわからないのですが、ご回答、もしくはヒントでも教えていただけたら幸いです。

よろしくお願いします。