/* 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()); } } }