Hey I got some quetions

Question 1:
I have a image that is in a picturebox which is called pictureBox1

I want to read monstersetbase.txt and add small ellipses to my image. The position of the ellipse comes from my monstersetbase.txt. The image is 256x256 and the coordinates is example 125x150.

I figured out a way to write a ellipse on the picturebox. It looks like this:

public void pictureBox1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
		{
			System.Drawing.Graphics g = e.Graphics;
			g.DrawEllipse(System.Drawing.Pens.Red, 125, 150, 2, 2);
		}

And on my form load:

public void Form1_Load(object sender, EventArgs e)
		{
			pictureBox1.Paint += new PaintEventHandler(this.pictureBox1_Paint);
			this.Controls.Add(pictureBox1);
		}

Now my problem is that I cant seem to figure out how to read the txt file properly when I need all the data

If I use for example:

public void pictureBox1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
		{
			String line;
			String data;

			System.Drawing.Graphics g = e.Graphics;

			// Reading txt file from fileLocation
			using (StreamReader sr = new StreamReader(Convert.ToString(@fileLocation)))
			{
				while ((line = sr.ReadLine()) != null)
				{
					// Converting line to string from txt file
					data = Convert.ToString(line);

					// Splitting data into piecesMap[]
					String[] piecesMap = data.Split('\t');

					// Converting x/y cord to float from string
					float xCord = float.Parse(piecesMap[3]);
					float yCord = float.Parse(piecesMap[4]);

					// Displaying ellipse
					g.DrawEllipse(System.Drawing.Pens.Red, xCord, yCord, 2, 2);
				}
			}

		}

then im getting the error:
Index was outside the bounds of the array.

Any suggestions?

My monstersetbase.txt:

3
0	0	30	78	60	240	240	-1	5	// Red Dragon
1	0	30	185	132	185	132	-1	10	  // Golden Titan
2	0	30	183	128	188	135	-1	10	  // Golden Solider
3	0	30	10	10	240	240	-1	12	  // Golden Goblin
4	0	30	10	10	240	240	-1	8 	// Golden Dragon
5	0	30	185	132	185	132	-1	7 	// Golden Lizard King
6	0	30	132	83	132	83	-1	10	  // Golden Vepar
7	0	30	183	128	188	135	-1	6 	// Golden Tantalos
8	0	30	132	83	138	90	-1	10	  // Golden Wheel
end
1
9	33	10	85	162	95	168	-1	5	// Kundun Demon
10	29	30	40	113	45	116	-1	3	// Kundum Demon
11	41	5	126	160	125	161	-1	2	// Kundum Demon
12	38	5	106	161	111	160	-1	2	// Kundum Demon
end

78 and 60 is the x and y coordinates in the text above.

Question 2:
After I insert the ellipse I want it to be "link" like when I click on it something happens
I also want to display a tooltil when I have the mouse over my ellipse is that possible?

Dani AI

Generated

Short diagnosis and a practical approach (for ):
the IndexOutOfRange comes from trying to access tokens that don’t exist (blank lines, header rows like 3, end, or comment text after //). Parse the file once (not inside Paint), build a small in-memory list of marker objects (x,y,label), then draw those markers from the Paint handler. Validate token counts and use TryParse so malformed lines are skipped instead of throwing.

Parsing example (run once at startup):

class Marker { public float X, Y; public string Label; }

var markers = new List<Marker>();
foreach (var raw in File.ReadLines(path))
{
    var line = raw.Split(new[] { "//" }, 2, StringSplitOptions.None)[0].Trim();
    if (string.IsNullOrEmpty(line) || line.Equals("end", StringComparison.OrdinalIgnoreCase)) continue;
    var tok = line.Split((char[])null, StringSplitOptions.RemoveEmptyEntries); // splits on tabs/spaces
    if (tok.Length < 5) continue; // defensive check
    if (float.TryParse(tok[3], out float x) && float.TryParse(tok[4], out float y))
        markers.Add(new Marker { X = x, Y = y, Label = tok[0] });
}

Drawing, hit-testing and coordinate conversion:
if PictureBox.SizeMode is anything but Normal you must map image-space coords to control-space (handle zoom/letterbox). Compute scale = Min(clientW/imgW, clientH/imgH), offset for centering, then transform each (x,y) before drawing. Use a small radius and draw in Paint from the pre-built list; call Invalidate() only when markers change.

Mouse / tooltip / click (concept):
on MouseMove transform each marker to control coords and check distance to mouse (or RectangleF.Contains). Keep the current hovered marker to avoid repeated tooltip.Show calls; use a ToolTip instance to display the label. On MouseClick run the action for the hit marker (open details, show dialog, etc.).

Note for :
for plotting a trajectory parse the pairs into a PointF[], transform to control coords the same way, then draw with Graphics.DrawLines (set SmoothingMode for nicer curves). Scale small float coordinates up to visible pixels if necessary.

thers one thing that i dont get in picture boxes.. i hav got an assignment rite.. its bout robot trajectory.. im given x and y co-ordinates but i dont now how to write the code .. I want to use DrawLine function but not sure how to use it.. can anyone help me plz.. the co-ordinates look somewhat like this:-
0.000 0.000
0.010 0.001
0.020 0.003
0.029 0.006
0.039 0.010
0.048 0.015
0.056 0.022
0.063 0.030
0.070 0.039
0.076 0.048
0.081 0.059
0.085 0.070
0.087 0.082
0.089 0.095
0.089 0.108
0.088 0.121
0.086 0.135

Please help me out..

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.