PDA

View Full Version : سوال: رسم خط روی Bitmap



3Dmajid
یک شنبه 09 اسفند 1388, 00:03 صبح
این کد رسم یه خط توسط موس روی Bitmap :


If e.Button = Windows.Forms.MouseButtons.Left Then
Dim myImage As Image = Nothing
myImage = New System.Drawing.Bitmap(500, 500)
PictureBox1.Image = myImage
Using graph = System.Drawing.Graphics.FromImage(myImage)
graph.DrawLine(Pens.Black, x, y, e.X, e.Y)
graph.Save()
End Using

ولی مشکل اینجاس که وقتی خط رو رسم میکنه، خط بعدی که رسم میشه خط قبلی پاک میشه !! چی کار کنم هر خطی که رسم میشه بمونه ؟ :بوس:

amin_iman82
یک شنبه 09 اسفند 1388, 00:10 صبح
Dim myImage As Image = Nothing رو از خط دوم حفظ کنید و بالای تابع بنویسید (خارج از تابع)،
PictureBox1.Image = myImage رو در خط آخر کدهای تابع بنویسید


ببینید حل میشه؟

اگه حل نشد لطفا کدتون را کامل بذارید تا بشه بیشتر بررسی کرد. ممنون.

3Dmajid
یک شنبه 09 اسفند 1388, 00:22 صبح
نه نشد ... این کد کامل، البته با تغییراتی که شما گفتی :


Public Class Form1

Dim x As Single
Dim y As Single
Dim myImage As Image = Nothing

Private Sub PictureBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown
If e.Button = Windows.Forms.MouseButtons.Left Then x = e.X : y = e.Y
End Sub

Private Sub PictureBox1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseUp
If e.Button = Windows.Forms.MouseButtons.Left Then
myImage = New System.Drawing.Bitmap(500, 500)
Using graph = System.Drawing.Graphics.FromImage(myImage)
graph.DrawLine(Pens.Black, x, y, e.X, e.Y)
graph.Save()
End Using
PictureBox1.Image = myImage
End If
End Sub

End Class