am

am

  • NA
  • 1
  • 0

problem when implementing undo/redo

May 14 2009 7:12 AM

Hi

I have a problem with my code

after I click undo I can't draw on the image and I don't know why

this is my code

Imports System.Drawing.Graphics

Imports System.Drawing.Bitmap

Imports System.Drawing

Public Class FrmChild

Dim Xstart As Short

Dim Ystart As Short

Dim Xend As Short

Dim Yend As Short

Dim BoolErasing As Boolean = False

Dim BoolDrawing As Boolean = False

Dim Image As New Bitmap(1500, 1200)

Public GraphFun As Graphics = Graphics.FromImage(Image)

Dim ErasingPen As New Pen(Drawing.Color.White, 3)

Dim DrawingPen As New Pen(Drawing.Color.Black, 3)

Private Sub PictureBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown

undo.Push(Image.Clone())

redo.Clear()

btnredo.Enabled = False

If Not btnundo.Enabled Then btnundo.Enabled = True

Xstart = e.X

Ystart = e.Y

If btnEraser Then

BoolErasing = True

ElseIf btnPencil Then

BoolDrawing = True

End If

End Sub

Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove

If BoolErasing Then

GraphFun.DrawLine(ErasingPen, Xstart, Ystart, e.X, e.Y)

ElseIf BoolDrawing Then

GraphFun.DrawLine(DrawingPen, Xstart, Ystart, e.X, e.Y)

End If

Xstart = e.X

Ystart = e.Y

PictureBox1.Image = Image

End Sub

Private Sub PictureBox1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseUp

Xend = e.X

Yend = e.Y

BoolErasing = False

BoolDrawing = False

PictureBox1.Image = Image

End Sub

 

Private Sub Btnundo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnundo.Click

If Not btnredo.Enabled Then btnredo.Enabled = True

redo.Push(Image.Clone())

Image = undo.Pop()

PictureBox1.Image = Image

If undo.Count = 0 Then

btnundo.Enabled = False

End If

End Sub

 

Private Sub FrmChild_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

btnundo.Enabled = False

btnredo.Enabled = False

End Sub

Private Sub btnredo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnredo.Click

If Not btnundo.Enabled Then btnundo.Enabled = True

undo.Push(Image.Clone())

Image = redo.Pop()

PictureBox1.Image = Image

If redo.Count = 0 Then btnredo.Enabled = False

End Sub

End Class


pleas help me