Mega Code Archive

 
Categories / C# / Event
 

Block Mouse

using System; using System.Drawing; using System.Windows.Forms;     class BlockOut: Form {      bool      bBlocking, bValidBox;      Point     ptBeg, ptEnd;      Rectangle rectBox;          public static void Main()      {           Application.Run(new BlockOut());      }      protected override void OnMouseDown(MouseEventArgs mea)      {           if (mea.Button == MouseButtons.Left)           {                ptBeg = ptEnd = new Point(mea.X, mea.Y);                    Graphics grfx = CreateGraphics();                grfx.DrawRectangle(new Pen(ForeColor), Rect(ptBeg, ptEnd));                grfx.Dispose();                    bBlocking = true;           }      }      protected override void OnMouseMove(MouseEventArgs mea)      {           if (bBlocking)           {                Graphics grfx = CreateGraphics();                grfx.DrawRectangle(new Pen(BackColor), Rect(ptBeg, ptEnd));                ptEnd = new Point(mea.X, mea.Y);                grfx.DrawRectangle(new Pen(ForeColor), Rect(ptBeg, ptEnd));                grfx.Dispose();                Invalidate();           }      }      protected override void OnMouseUp(MouseEventArgs mea)      {           if (bBlocking && mea.Button == MouseButtons.Left)           {                Graphics grfx = CreateGraphics();                rectBox = Rect(ptBeg, new Point(mea.X, mea.Y));                grfx.DrawRectangle(new Pen(ForeColor), rectBox);                grfx.Dispose();                    bBlocking = false;                bValidBox = true;                Invalidate();           }      }      protected override void OnPaint(PaintEventArgs pea)      {           Graphics grfx = pea.Graphics;               if (bValidBox)                grfx.FillRectangle(new SolidBrush(ForeColor), rectBox);               if (bBlocking)                grfx.DrawRectangle(new Pen(ForeColor), Rect(ptBeg, ptEnd));      }      Rectangle Rect(Point ptBeg, Point ptEnd)      {           return new Rectangle(Math.Min(ptBeg.X, ptEnd.X),                                Math.Min(ptBeg.Y, ptEnd.Y),                                Math.Abs(ptEnd.X - ptBeg.X),                                Math.Abs(ptEnd.Y - ptBeg.Y));      } }