Click here to Skip to main content
16,007,163 members
Home / Discussions / C#
   

C#

 
QuestionArrayList help? Pin
eric_tran24-May-06 1:09
eric_tran24-May-06 1:09 
AnswerRe: ArrayList help? [modified] Pin
J4amieC24-May-06 1:12
J4amieC24-May-06 1:12 
GeneralRe: ArrayList help? [modified] Pin
Larantz24-May-06 1:16
Larantz24-May-06 1:16 
AnswerRe: ArrayList help? [modified] Pin
User 665824-May-06 1:33
User 665824-May-06 1:33 
GeneralRe: ArrayList help? [modified] Pin
J4amieC24-May-06 1:46
J4amieC24-May-06 1:46 
GeneralRe: ArrayList help? [modified] Pin
User 665824-May-06 2:00
User 665824-May-06 2:00 
AnswerRe: ArrayList help? Pin
eric_tran24-May-06 2:24
eric_tran24-May-06 2:24 
AnswerRe: ArrayList help? Pin
eric_tran24-May-06 2:31
eric_tran24-May-06 2:31 
By the way, I still got a problem, I can't write the leftover points to a file.
It keeps writing all points in pointArray and pointErase ArrayList even though I removed erased points before hand.

Pls help if you have time

Thanks


using System;
using System.Drawing;
using System.Collections;
using System.Collections.Specialized; 
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.IO;

namespace Part_2_A2_ST2
{	 
	 
	public class Form1 : System.Windows.Forms.Form
	{
		 
		private StreamReader sr;
		private StreamWriter sw; 

		private Pen pen;
		private Point pt1, pt2;
		private bool isMouseDown;
		private bool isMouseUp;
		private Bitmap tempImage;

		private Point pt;
		private Graphics g;
		private SolidBrush bgBrush;
		
		private static ArrayList pointArray;
		private static ArrayList pointErase;

		private bool line = false;
		private bool eraser = false;

		private Point point; 
		private Graphics tempG;

		private static Point ptCount;
		private static Point ptErase;

		private static string xDraw, yDraw;
		private static string xErase, yErase;
		private static string drawPoint, erasePoint;

		private System.Windows.Forms.MainMenu mainMenu1;
		private System.Windows.Forms.MenuItem menuItem1;
		private System.Windows.Forms.MenuItem menuItem2;
		private System.Windows.Forms.MenuItem menuItem3;
		private System.Windows.Forms.MenuItem menuItem4;
		private System.Windows.Forms.MenuItem menuItem5;
		private System.Windows.Forms.MenuItem menuItem6;
		private System.Windows.Forms.MenuItem menuItem7;
		private System.Windows.Forms.MenuItem menuItem8;
		private System.Windows.Forms.MenuItem menuItem9;
		private System.Windows.Forms.ToolBar toolBar1;
		private System.Windows.Forms.ImageList imageList1;
		private System.Windows.Forms.ToolBarButton tbNew;
		private System.Windows.Forms.ToolBarButton tbOpen;
		private System.Windows.Forms.ToolBarButton tbSave;
		private System.Windows.Forms.ToolBarButton toolBarButton1;
		private System.Windows.Forms.ToolBarButton tbPointer;
		private System.Windows.Forms.ToolBarButton Rectangle;
		private System.Windows.Forms.ToolBarButton tbEllipse;
		private System.Windows.Forms.ToolBarButton tbLine;
		private System.Windows.Forms.ToolBarButton tbPolygon;
		private System.Windows.Forms.ToolBarButton toolBarButton2;
		private System.Windows.Forms.ToolBarButton tbEraser;
		private System.Windows.Forms.ToolBarButton toolBarButton3;
		private System.ComponentModel.IContainer components;
 		 

		public Form1()
		{
			pointArray = new ArrayList();
			pointErase = new ArrayList();

			point = new Point(0, 0); 
			InitializeComponent();

			pen = new Pen(Color.Black, 2);
			pt1 = new Point(50, 50);
			pt2 = new Point(200, 200);
			isMouseDown = false;
			isMouseUp = false;

			tempImage = new Bitmap(	SystemInformation.PrimaryMonitorMaximizedWindowSize.Width,
				SystemInformation.PrimaryMonitorMaximizedWindowSize.Height);
			tempG = Graphics.FromImage(tempImage);
			tempG.Clear(this.BackColor);
			 
			if (!File.Exists("DataPoints.txt"))
				File.Create("DataPoints.txt");

			pt = new Point(0,0);
			g = this.CreateGraphics();
//			g = this.pane2.CreateGraphics();
			bgBrush = new SolidBrush(this.BackColor);

			
		}

		 
		protected override void Dispose( bool disposing )
		{
			if( disposing )
			{
				if (components != null) 
				{
					components.Dispose();
				}
			}
			base.Dispose( disposing );
		}

		#region Windows Form Designer generated code
		 
		 
		[STAThread]
		static void Main() 
		{
			Application.Run(new Form1());	 
		}

		private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
		{
			//Read file and Draw ellipse around points
			if (!isMouseDown)
			{
				using (sr = new StreamReader("DataPoints.txt"))
				{
					string str = sr.ReadLine();
					if (str == null)
						return;
					string [] strs = str.Split(' ');
					if (strs.Length != 2)
						return;
					Point pt1 = new Point(int.Parse(strs[0]),int.Parse(strs[1])); 					 			 

					Graphics g = e.Graphics;
					while ((str = sr.ReadLine()) != null)
					{
						strs = str.Split(' ');
						if (strs.Length != 2)
							break;
						Point pt2 = new Point(int.Parse(strs[0]),int.Parse(strs[1]));							
							 
						g.DrawEllipse(Pens.Blue, pt2.X-2, pt2.Y-2, 4, 4);
						g.DrawLine(Pens.Black, pt1, pt2);
						pt1 = pt2;
							 
					}
				}
				 
			}
		}


		private void Form1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
		{
			if (line)
			{
				isMouseDown = true;
				pt1 = new Point(e.X, e.Y);
				point = pt1;	 
				

				//Open file 
				sw = new StreamWriter("DataPoints.txt");								 
			}		 
		}



		private void Form1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
		{
			if (line)
			{			
				if (isMouseDown)
				{		 

					pt2 = new Point(e.X, e.Y);
					Graphics g = this.CreateGraphics();
					g.DrawLine(pen, point, pt2);
					tempG.DrawLine(pen, point, pt2);
					point = pt2;					 

					xDraw = (e.X).ToString();
 					yDraw = (e.Y).ToString();
					drawPoint = xDraw + " " + yDraw;
					AddPointDraw(drawPoint);		 

					 				
				}
			}


			if (eraser)
			{
				if (isMouseDown)
				{
					line = false;

//					ptErase = new Point(e.X,e.Y);
 
					//Eraser
					g.FillRectangle(bgBrush,e.X-10,e.Y-10,20,20);
					g.DrawRectangle(Pens.Red,e.X-10,e.Y-10,20,20);
					//Erase area
					g.DrawRectangle(new Pen(this.BackColor),pt.X-10, pt.Y-10, 20, 20);
						
					pt.X = e.X;
					pt.Y = e.Y;		
			
					//Add erased points to pointErase
					xErase = (e.X).ToString();
					yErase = (e.Y).ToString();
					erasePoint = xErase + " " + yErase;
					AddPointErase(erasePoint);				 
				}
			}
		}

		private void Form1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
		{
			eraser = false;
			isMouseUp = true;
			g.FillRectangle(bgBrush, e.X-10, e.Y-10, 30, 30);

			if (line)
			{
				isMouseDown = false;
			
				//tempG.DrawLine(pen, pt1, pt2);
				this.BackgroundImage = (Bitmap) tempImage.Clone();				 

				sw.Close();
				this.Refresh();
			} 		 
			 
		}


		private void Form1_Resize(object sender,System.EventArgs e)
		{
			this.BackgroundImage = (Bitmap) tempImage.Clone();
		}
    

	 
		private void toolBar1_ButtonClick(object sender, System.Windows.Forms.ToolBarButtonClickEventArgs e)
		{
			if ( e.Button == tbPolygon)
				line = true;
			else if (e.Button == tbEraser)
			{				 
				eraser = true;
				isMouseDown = false;
			}
			else if (e.Button == tbSave) 
				Save();
		}



		public void AddPointDraw(String drawPoint)
		{
			pointArray.Add(drawPoint);
		}


		public void AddPointErase(String erasePoint)
		{
			pointErase.Add(erasePoint);
		}


		private static void RemovePoint()
		{
			//Remove points from list
			for (int i = 0; i < pointErase.Count; i ++)
			{
				for (int j = 0; j < pointArray.Count; j ++)
				{
					bool isMatch = Object.Equals(pointArray[j], pointErase[i]);
					if (isMatch)					 
					{
						pointArray.RemoveAt(j);
						pointErase.RemoveAt(i);
					}
				}
			}
		}


		private void Save()
		{
			RemovePoint();
			 
			sw.WriteLine("pointArray...........");

			foreach (object s in pointArray)
			{
				sw.WriteLine(s);
			}

			sw.WriteLine("pointErase................");

			foreach (object s in pointErase)
			{
				sw.WriteLine(s);
			}

			sw.WriteLine("Stop--------------------------");

			sw.Close();
		}


	}
}


eric
Questiona few important questions about forms ? Pin
cmpeng3424-May-06 0:37
cmpeng3424-May-06 0:37 
AnswerRe: a few important questions about forms ? Pin
J4amieC24-May-06 1:05
J4amieC24-May-06 1:05 
AnswerRe: a few important questions about forms ? Pin
rah_sin24-May-06 1:09
professionalrah_sin24-May-06 1:09 
QuestionHelp me how to gets "%Systemroot%" directory? Pin
khanfresh23-May-06 23:59
khanfresh23-May-06 23:59 
AnswerRe: Help me how to gets &quot;%Systemroot%&quot; directory? [modified] Pin
User 665824-May-06 0:59
User 665824-May-06 0:59 
Questioncall event click Pin
ltxuan23-May-06 23:53
ltxuan23-May-06 23:53 
AnswerRe: call event click Pin
albCode23-May-06 23:59
albCode23-May-06 23:59 
QuestionError in Use Dataset.tables[].clear() . Help Me Pin
hdv21223-May-06 23:45
hdv21223-May-06 23:45 
AnswerRe: Error in Use Dataset.tables[].clear() . Help Me Pin
nps_ltv25-May-06 0:03
nps_ltv25-May-06 0:03 
QuestionMDI and MessageBox Pin
Jonas Beckeman23-May-06 23:44
Jonas Beckeman23-May-06 23:44 
AnswerRe: MDI and MessageBox Pin
alexey N24-May-06 1:33
alexey N24-May-06 1:33 
GeneralRe: MDI and MessageBox Pin
Jonas Beckeman24-May-06 1:44
Jonas Beckeman24-May-06 1:44 
GeneralRe: MDI and MessageBox Pin
alexey N24-May-06 1:46
alexey N24-May-06 1:46 
GeneralRe: MDI and MessageBox Pin
Jonas Beckeman24-May-06 2:16
Jonas Beckeman24-May-06 2:16 
QuestionGet all filenames in a chosen folder? Pin
abiisalwayshappy23-May-06 23:37
abiisalwayshappy23-May-06 23:37 
AnswerRe: Get all filenames in a chosen folder? Pin
ranandbe23-May-06 23:41
ranandbe23-May-06 23:41 
AnswerRe: Get all filenames in a chosen folder? Pin
alexey N24-May-06 1:01
alexey N24-May-06 1:01 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.