Skip to main content

Is there an example program available which catches the MouseMove event in a PictureBox to draw a line following the movement and allowing this to be saved as a bitmap. I've seen examples in C# but my knowledge of a possible translation to COBOL is inadequate.

Can somebody help me on this?

Regards

Rainer

Is there an example program available which catches the MouseMove event in a PictureBox to draw a line following the movement and allowing this to be saved as a bitmap. I've seen examples in C# but my knowledge of a possible translation to COBOL is inadequate.

Can somebody help me on this?

Regards

Rainer

Here is an example in a Windows Forms application:

       class-id savesignature.Form1 is partial
                 inherits type System.Windows.Forms.Form.
       
       working-storage section.
       01 prevLocation type Point value null.
       method-id NEW.
       procedure division.
           invoke self::InitializeComponent
           goback.
       end method.

       method-id pictureBox1_MouseDown final private.
       procedure division using by value sender as object e as type System.Windows.Forms.MouseEventArgs.
          set prevLocation to e::Location
          invoke self::pictureBox1_MouseMove(sender, e)
          
       end method.

       method-id pictureBox1_MouseMove final private.
       01 bmp type Bitmap.
       procedure division using by value sender as object e as type System.Windows.Forms.MouseEventArgs.
       
           if (PrevLocation not = null)
              if (pictureBox1::Image = null)
                 set bmp to new Bitmap(pictureBox1::Width, pictureBox1::Height)
                    perform using g as type Graphics = type Graphics::FromImage(bmp)
                       invoke g::Clear(type Color::White)
                    end-perform
                 set pictureBox1::Image to bmp
               end-if
               perform using g as type Graphics = type Graphics::FromImage(pictureBox1::Image)
                  invoke g::DrawLine(type Pens::Black, prevLocation::X, prevLocation::Y, e::X, e::Y)
               end-perform
               invoke pictureBox1::Invalidate
               set PrevLocation to e::Location
            end-if

       end method.

       method-id pictureBox1_MouseUp final private.
       procedure division using by value sender as object e as type System.Windows.Forms.MouseEventArgs.
           set prevLocation to null.
       end method.

       method-id button1_Click final private.
       01 bmp type Bitmap.
       procedure division using by value sender as object e as type System.EventArgs.
       
           set bmp to new type Bitmap(PictureBox1::Width, PictureBox1::Height)
           invoke PictureBox1::DrawToBitmap(bmp, PictureBox1::ClientRectangle)
           invoke bmp::Save("c:\\\\temp\\mysignature.jpg", type System.Drawing.Imaging.ImageFormat::Jpeg)
    
       end method.
      
       end class.

Is there an example program available which catches the MouseMove event in a PictureBox to draw a line following the movement and allowing this to be saved as a bitmap. I've seen examples in C# but my knowledge of a possible translation to COBOL is inadequate.

Can somebody help me on this?

Regards

Rainer

Seems I've answered the question myself. Should anyone need this feature, here is a piece of code using Windows Forms.

1st Create a pictureBox

2nd set the mouse properties Up, Down Move

     $set ilusing "System.Drawing".

     $set ilusing "System.Drawing.Graphics".

     $set ilusing "System.IO.Stream".

working-storage

      01 Pen              type Pen.

      01 bmp              type Bitmap.

      01 g                type Graphics.

      01 _Previous        type Point.

      01 mouseval         pic 9.

       88 mousedown       value 1 false 0.

Methods:

      method-id pictureBox1_Paint final private.

      procedure division using by value sender as object e as type System.Windows.Forms.PaintEventArgs.

          set Pen to new Pen(type Color::Black, 3)

      end method.

      method-id pictureBox1_MouseMove final private.

      procedure division using by value sender as object e as type System.Windows.Forms.MouseEventArgs.

          if mousedown

              if pictureBox1::Image = Null

                  set bmp to new Bitmap(PictureBox1::Width, PictureBox1::Height)

                  set g to type Graphics::FromImage(bmp)

                  invoke g::Clear(type Color::White)

                  set pictureBox1::Image to bmp

              else

                  invoke g::DrawLine(Pen, _Previous::X, _Previous::Y, e::X, e::Y)

              end-if

              invoke pictureBox1::Invalidate()

              set _Previous::X to e::X

              set _Previous::Y to e::Y

          end-if

      end method.

      method-id pictureBox1_MouseDown final private.

      procedure division using by value sender as object e as type System.Windows.Forms.MouseEventArgs.

          set _Previous to new Point(e::X, e::Y)

          set mousedown to true

      end method.

      method-id pictureBox1_MouseUp final private.

      procedure division using by value sender as object e as type System.Windows.Forms.MouseEventArgs.

          set mousedown to false

          set _Previous to Null

      end method.

      method-id button2_Click final private.

      procedure division using by value sender as object e as type System.EventArgs.      

          invoke bmp::Save("Signature.bmp", type System.Drawing.Imaging.ImageFormat::Bmp)

          set pictureBox1::Image to Null

      end method.


Is there an example program available which catches the MouseMove event in a PictureBox to draw a line following the movement and allowing this to be saved as a bitmap. I've seen examples in C# but my knowledge of a possible translation to COBOL is inadequate.

Can somebody help me on this?

Regards

Rainer

Sorry Chris,

didn't notice you had already answered my question. On the other hand - shows I'm getting better.


Is there an example program available which catches the MouseMove event in a PictureBox to draw a line following the movement and allowing this to be saved as a bitmap. I've seen examples in C# but my knowledge of a possible translation to COBOL is inadequate.

Can somebody help me on this?

Regards

Rainer

Yes Karl, you did quite well on the code conversion.

I am very impressed!