using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace Exercise_4___Painter_again { public partial class Form1 : Form { private Graphics mouseDisplayed, mouseDisplayed2; private int prevX, prevY, prevX2, prevY2, boxes = 0; private Color penColour = Color.Black; private int penWidth = 1; private Bitmap picture, picture2; private int firstX1, firstY1; private int firstX2, firstY2; private int secondX1, secondY1; private int secondX2, secondY2; public Form1() { InitializeComponent(); } private void Form1_MouseMove(object sender, MouseEventArgs e) { Pen p = new Pen(penColour, penWidth); if (e.Button == MouseButtons.Left) { if (comboBox_tool.Text == ("Pen")) { mouseDisplayed.DrawLine(p, prevX, prevY, e.X, e.Y); prevY = e.Y; prevX = e.X; Invalidate(); } else if (comboBox_tool.Text == "Boxes") { Pen p2 = Pens.Black; Pen p2White = Pens.White; Brush b = Brushes.White; if (boxes == 0) { mouseDisplayed2.FillRectangle(b, 0, 0, 800, 600); mouseDisplayed2.DrawLine(p, prevX, prevY, e.X, e.Y); prevX2 = prevX; prevY2 = prevY; firstX2 = e.X; firstY2 = e.Y; firstX1 = prevX; firstY1 = prevY; Invalidate(); } else if (boxes == 1) { int XDist, YDist; //DRAW A LINE PARALLEL TO THE ORIGINAL LINE XDist = e.X - firstX2; YDist = e.Y - firstY2; secondX1 = firstX2 + XDist; secondY1 = firstY2 + YDist; secondX2 = firstX1 + XDist; secondY2 = firstY1 + YDist; mouseDisplayed2.FillRectangle(b, 0, 0, 800, 600); mouseDisplayed2.DrawLine(p, secondX1, secondY1, secondX2, secondY2); mouseDisplayed2.DrawLine(p, firstX1, firstY1, secondX2, secondY2); mouseDisplayed2.DrawLine(p, firstX2, firstY2, secondX1, secondY1); mouseDisplayed2.DrawLine(p, firstX1, firstY1, firstX2, firstY2); //Draw a line from prevX2,prevY2 to newX and newY //mouseDisplayed2.DrawLine(p2, firstX2, firstY2, e.X, e.Y); //mouseDisplayed2.DrawLine(p2, firstX1, firstY1, e.X, e.Y); Invalidate(); } } } } private void Form1_Load(object sender, EventArgs e) { this.SetStyle(ControlStyles.DoubleBuffer | ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint, true); this.UpdateStyles(); picture = new Bitmap(this.ClientRectangle.Width, this.ClientRectangle.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); picture2 = new Bitmap(this.ClientRectangle.Width, this.ClientRectangle.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); mouseDisplayed = Graphics.FromImage(picture); mouseDisplayed.Clear(SystemColors.Window); mouseDisplayed2 = Graphics.FromImage(picture2); mouseDisplayed2.Clear(SystemColors.Window); } private void Form1_MouseDown(object sender, MouseEventArgs e) { prevY = e.Y; prevX = e.X; } private void toolStripButton1_Click(object sender, EventArgs e) { penColour = Color.Red; } private void toolStripButton2_Click(object sender, EventArgs e) { penColour = Color.Orange; } private void toolStripButton3_Click(object sender, EventArgs e) { penColour = Color.Yellow; } private void toolStripButton4_Click(object sender, EventArgs e) { penColour = Color.Green; } private void toolStripButton5_Click(object sender, EventArgs e) { penColour = Color.Blue; } private void toolStripButton6_Click(object sender, EventArgs e) { penColour = Color.Purple; } private void toolStripButton7_Click(object sender, EventArgs e) { penColour = Color.Black; } private void redToolStripMenuItem_Click(object sender, EventArgs e) { penColour = Color.Red; } private void orangeToolStripMenuItem_Click(object sender, EventArgs e) { penColour = Color.Orange; } private void yellowToolStripMenuItem_Click(object sender, EventArgs e) { penColour = Color.Yellow; } private void greenToolStripMenuItem_Click(object sender, EventArgs e) { penColour = Color.Green; } private void blueToolStripMenuItem_Click(object sender, EventArgs e) { penColour = Color.Blue; } private void purpleToolStripMenuItem_Click(object sender, EventArgs e) { penColour = Color.Purple; } private void blackToolStripMenuItem_Click(object sender, EventArgs e) { penColour = Color.Black; } private void toolStripButton_1_Click(object sender, EventArgs e) { penWidth = 1; numericUpDown_width.Value = penWidth; } private void toolStripButton_2_Click(object sender, EventArgs e) { penWidth = 2; numericUpDown_width.Value = penWidth; } private void toolStripButton_4_Click(object sender, EventArgs e) { penWidth = 4; numericUpDown_width.Value = penWidth; } private void toolStripButton_8_Click(object sender, EventArgs e) { penWidth = 8; numericUpDown_width.Value = penWidth; } private void toolStripButton_16_Click(object sender, EventArgs e) { penWidth = 16; numericUpDown_width.Value = penWidth; } private void toolStripButton_32_Click(object sender, EventArgs e) { penWidth = 32; numericUpDown_width.Value = penWidth; } private void toolStripMenuItem2_Click(object sender, EventArgs e) { penWidth = 1; numericUpDown_width.Value = penWidth; } private void toolStripMenuItem3_Click(object sender, EventArgs e) { penWidth = 2; numericUpDown_width.Value = penWidth; } private void toolStripMenuItem4_Click(object sender, EventArgs e) { penWidth = 4; numericUpDown_width.Value = penWidth; } private void toolStripMenuItem5_Click(object sender, EventArgs e) { penWidth = 8; numericUpDown_width.Value = penWidth; } private void toolStripMenuItem6_Click(object sender, EventArgs e) { penWidth = 16; numericUpDown_width.Value = penWidth; } private void toolStripMenuItem7_Click(object sender, EventArgs e) { penWidth = 32; numericUpDown_width.Value = penWidth; } private void Form1_Paint(object sender, PaintEventArgs e) { if (comboBox_tool.Text == ("Boxes")) { e.Graphics.DrawImage(picture2, 0, 0, picture2.Width, picture2.Height); } e.Graphics.DrawImage(picture, 0, 0, picture.Width, picture.Height); } private void domainUpDown1_SelectedItemChanged(object sender, EventArgs e) { } private void numericUpDown_width_ValueChanged(object sender, EventArgs e) { penWidth = decimal.ToInt32(numericUpDown_width.Value); } private void button_reset_Click(object sender, EventArgs e) { //make it all white Brush b = Brushes.White; mouseDisplayed.FillRectangle(b, 0, 0, 800, 600); Invalidate(); } private void comboBox_tool_SelectedIndexChanged(object sender, EventArgs e) { } private void Form1_MouseUp(object sender, MouseEventArgs e) { if(comboBox_tool.Text == "Boxes"){ if (boxes == 1){ boxes = 0; Pen p = new Pen(penColour, penWidth); mouseDisplayed.DrawLine(p, secondX1, secondY1, secondX2, secondY2); mouseDisplayed.DrawLine(p, firstX1, firstY1, secondX2, secondY2); mouseDisplayed.DrawLine(p, firstX2, firstY2, secondX1, secondY1); mouseDisplayed.DrawLine(p, firstX1, firstY1, firstX2, firstY2); Invalidate(); } else if (boxes == 0){ boxes = 1; } } } } }