|
分類:[VB.NET/VB2005 以降]
vb2008です。
pictureboxに読み込んだファイルの上にフリーハンドで線を描いて、それを保存するという、つまりペイントみたいなものを作ろうとしています。
しかし、保存しても、描いた線がその読み込んだファイルの上に上書き保存されません。画像を回転させた場合、例えばもと画像から90度回転させた場合はちゃんと90度傾いた状態で保存されるのですが、フリーハンドで描画した線だけは保存されません。一時的な描画のままのようで(だから「最小化」を押して、また出した時に、描画した線は消えている)……。
どのようにすればフリーハンドで描いた線も保存できるようになるでしょうか、教えていただけないでしょうか。
Dim drawflg As Boolean = False 'trueなら描画中
Dim x1 As Integer = -1, y1 As Integer
'「開く」
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
Dim img As Image
fs = New System.IO.FileStream(OpenFileDialog1.FileName, FileMode.Open, FileAccess.Read)
PictureBox1.Image = System.Drawing.Image.FromStream(fs)
fs.Close()
img = PictureBox1.Image
End If
End Sub
'描画開始
Private Sub PictureBox1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown
If e.Button = Windows.Forms.MouseButtons.Left Then
x1 = e.X
y1 = e.Y
End If
drawflg = True
End Sub
'描画中
Private Sub PictureBox1_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
Dim mypen As New Pen(Color.Black, 1)
Dim g1 As Graphics
g1 = PictureBox1.CreateGraphics()
If drawflg = True Then
g1.DrawLine(mypen, x1, y1, e.X, e.Y)
x1 = e.X
y1 = e.Y
End If
End Sub
'描画終了
Private Sub PictureBox1_MouseUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseUp
If drawflg = True Then
drawflg = False
End If
End Sub
'「保存」
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
If SaveFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
PictureBox1.Image.Save(SaveFileDialog1.FileName, Imaging.ImageFormat.Png)
End If
End Sub
|