Mega Code Archive

 
Categories / C# / 2D Graphics
 

Scribble

/* Professional Windows GUI Programming Using C# by Jay Glynn, Csaba Torok, Richard Conway, Wahid Choudhury,     Zach Greenvoss, Shripad Kulkarni, Neil Whitlow Publisher: Peer Information ISBN: 1861007663 */ using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; namespace Scribble {     /// <summary>     /// Summary description for Form1.     /// </summary>     public class frmScribble : System.Windows.Forms.Form     {         /// <summary>         /// Required designer variable.         /// </summary>         private System.ComponentModel.Container components = null;         private bool mouseDown = false;         private Point lastPoint = Point.Empty;         private string color = "black";       private Graphics g;       private Pen p;         public frmScribble()         {             //             // Required for Windows Form Designer support             //             InitializeComponent();          g = CreateGraphics();          p = new Pen(Color.FromName(color));             //             // TODO: Add any constructor code after InitializeComponent call             //         }         /// <summary>         /// Clean up any resources being used.         /// </summary>         protected override void Dispose( bool disposing )         {          g.Dispose();          if( disposing )             {                 if (components != null)                  {                     components.Dispose();                 }             }             base.Dispose( disposing );         }         protected override void OnMouseDown(MouseEventArgs e)         {             mouseDown = true;             if(e.Button==MouseButtons.Right)             {                 ContextMenu m = new ContextMenu();                 m.MenuItems.Add(0, new MenuItem("black", new EventHandler(RightMouseButton_Click)));                 m.MenuItems.Add(1, new MenuItem("white", new EventHandler(RightMouseButton_Click)));                 m.MenuItems.Add(2, new MenuItem("red", new EventHandler(RightMouseButton_Click)));                 m.MenuItems.Add(3, new MenuItem("green", new EventHandler(RightMouseButton_Click)));                 m.MenuItems.Add(4, new MenuItem("blue", new EventHandler(RightMouseButton_Click)));                 m.Show(this, new Point(e.X, e.Y));             }         }         protected void RightMouseButton_Click(object sender, EventArgs e)         {             color = ((MenuItem)sender).Text;          p = new Pen(Color.FromName(color));         }         protected override void OnMouseUp(MouseEventArgs e)         {             mouseDown = false;         }         protected override void OnMouseMove(MouseEventArgs e)         {             if(lastPoint.Equals(Point.Empty)) lastPoint = new Point(e.X, e.Y);             if(mouseDown)              {                 Point pMousePos = new Point(e.X, e.Y);             g.DrawLine(p, pMousePos, lastPoint);             }             lastPoint = new Point(e.X, e.Y);         }         #region Windows Form Designer generated code         /// <summary>         /// Required method for Designer support - do not modify         /// the contents of this method with the code editor.         /// </summary>         private void InitializeComponent()         {             //              // frmScribble             //              this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);             this.ClientSize = new System.Drawing.Size(808, 542);             this.MaximizeBox = false;             this.Name = "frmScribble";             this.Text = "Scribble";         }         #endregion         /// <summary>         /// The main entry point for the application.         /// </summary>         [STAThread]         static void Main()          {             Application.Run(new frmScribble());         }     } }