public void calculateBorders(ref double LeftUpperX, ref double LeftUpperY, ref double RightLowerX, ref double RightLowerY, Equipment.VectorPic vectorpic, bool normalized = false) { if (normalized) { //if (vectorpic.arcs.Count != 0) //{ // LeftUpperX = vectorpic.arcs[0].UpperLeft.X; LeftUpperY = vectorpic.arcs[0].UpperLeft.Y; // RightLowerX = vectorpic.arcs[0].UpperLeft.X; RightLowerY = vectorpic.arcs[0].UpperLeft.Y; //} if (vectorpic.polyLines.Count != 0) { LeftUpperX = vectorpic.polyLines[0][0].X; LeftUpperY = vectorpic.polyLines[0][0].Y; RightLowerX = vectorpic.polyLines[0][0].X; RightLowerY = vectorpic.polyLines[0][0].Y; } else if (vectorpic.circles.Count != 0) { LeftUpperX = vectorpic.circles[0].center.X; LeftUpperY = vectorpic.circles[0].center.Y; RightLowerX = vectorpic.circles[0].center.X; RightLowerY = vectorpic.circles[0].center.Y; } else { return; } foreach (var i in vectorpic.polyLines) { foreach (var j in i) { if (j.X < LeftUpperX) { LeftUpperX = j.X; } if (j.X > RightLowerX) { RightLowerX = j.X; } if (j.Y < LeftUpperY) { LeftUpperY = j.Y; } if (j.Y > RightLowerY) { RightLowerY = j.Y; } } } foreach (var i in vectorpic.circles) { if (i.center.X - i.radius < LeftUpperX) { LeftUpperX = i.center.X - i.radius; } if (i.center.X + i.radius > RightLowerX) { RightLowerX = i.center.X + i.radius; } if (i.center.Y - i.radius < LeftUpperY) { LeftUpperY = i.center.Y - i.radius; } if (i.center.Y + i.radius > RightLowerY) { RightLowerY = i.center.Y + i.radius; } } //foreach (var i in vectorpic.arcs) //{ // if (i.UpperLeft.X < LeftUpperX) // LeftUpperX = i.UpperLeft.X; // if (i.UpperLeft.X + i.radius * 2 > RightLowerX) // RightLowerX = i.UpperLeft.X + i.radius * 2; // if (i.UpperLeft.Y < LeftUpperY) // LeftUpperY = i.UpperLeft.Y; // if (i.UpperLeft.Y + i.radius * 2 > RightLowerY) // RightLowerY = i.UpperLeft.Y + i.radius * 2; //} //LeftUpperX--; LeftUpperY--; //RightLowerX++; RightLowerY++; } else { //if (vectorpic.arcs.Count != 0) //{ // LeftUpperX = vectorpic.arcs[0].UpperLeft.X; LeftUpperY = vectorpic.arcs[0].UpperLeft.Y; // RightLowerX = vectorpic.arcs[0].UpperLeft.X; RightLowerY = vectorpic.arcs[0].UpperLeft.Y; //} if (vectorpic.polyLines.Count != 0) { LeftUpperX = vectorpic.polyLines[0][0].X; LeftUpperY = vectorpic.polyLines[0][0].Y; RightLowerX = vectorpic.polyLines[0][0].X; RightLowerY = vectorpic.polyLines[0][0].Y; } else if (vectorpic.circles.Count != 0) { LeftUpperX = vectorpic.circles[0].center.X; LeftUpperY = vectorpic.circles[0].center.Y; RightLowerX = vectorpic.circles[0].center.X; RightLowerY = vectorpic.circles[0].center.Y; } else { return; } foreach (var i in vectorpic.polyLines) { foreach (var j in i) { if (j.X < LeftUpperX) { LeftUpperX = j.X; } if (j.X > RightLowerX) { RightLowerX = j.X; } if (j.Y > LeftUpperY) { LeftUpperY = j.Y; } if (j.Y < RightLowerY) { RightLowerY = j.Y; } } } foreach (var i in vectorpic.circles) { if (i.center.X - i.radius < LeftUpperX) { LeftUpperX = i.center.X - i.radius; } if (i.center.X + i.radius > RightLowerX) { RightLowerX = i.center.X + i.radius; } if (i.center.Y + i.radius > LeftUpperY) { LeftUpperY = i.center.Y + i.radius; } if (i.center.Y - i.radius < RightLowerY) { RightLowerY = i.center.Y - i.radius; } } //foreach (var i in vectorpic.arcs) //{ // if (i.UpperLeft.X < LeftUpperX) // LeftUpperX = i.UpperLeft.X; // if (i.UpperLeft.X + i.radius * 2 > RightLowerX) // RightLowerX = i.UpperLeft.X + i.radius * 2; // if (i.UpperLeft.Y > LeftUpperY) // LeftUpperY = i.UpperLeft.Y; // if (i.UpperLeft.Y - i.radius * 2 < RightLowerY) // RightLowerY = i.UpperLeft.Y - i.radius * 2; //} //LeftUpperX--; LeftUpperY++; // RightLowerX++; RightLowerY--; } }
void pickFile(int num) { OpenFileDialog file = new OpenFileDialog(); //new FirstOpenAddUGO().ShowDialog(); if (file.ShowDialog() == DialogResult.OK) { if (file.FileName.Split('.')[file.FileName.Split('.').Length - 1] == "txt") { image img = JsonConvert.DeserializeObject <image> (File.ReadAllText(file.FileName)); vectorImages[num] = new Equipment.VectorPic(); vectorImages[num].polyLines = new List <List <Equipment.Point> >(); //vectorImages[num].hatching = new List<Equipment.Point>(); //vectorImages[num].arcs = new List<arc>(); vectorImages[num].circles = new List <circle>(); foreach (var i in img.plines) { vectorImages[num].polyLines.Add(new List <Equipment.Point>()); foreach (var j in i.list) { vectorImages[num].polyLines[vectorImages[num].polyLines.Count - 1].Add(new Equipment.Point() { X = Convert.ToSingle(j.X), Y = Convert.ToSingle(j.Y) }); } } //foreach (var i in img.arcs) //{ // vectorImages[num].arcs.Add(new arc() { EndAngle = (i.EndAngle/Math.PI)*180, radius=i.radius, startAngle=(i.startAngle / Math.PI) * 180, UpperLeft = i.UpperLeft, radiusX = i.radius, radiusY = i.radius }); //} foreach (var i in img.circles) { vectorImages[num].circles.Add(new circle() { center = i.center, radius = i.radius, radiusX = i.radiusX, radiusY = i.radiusY }); } tableLayoutPanel6.Controls.Remove(buttons_for_files[num]); for_plans[num] = new PictureBox(); for_plans[num].Name = num.ToString(); for_plans[num].Dock = DockStyle.Fill; for_plans[num].ContextMenu = menu2; tableLayoutPanel6.Controls.Remove(buttons_for_links[num]); tableLayoutPanel6.Controls.Add(for_plans[num], num, 1); tableLayoutPanel6.SetRowSpan(for_plans[num], 2); Refresh(); //normalization. Part 1 - calcualiting proportions double LeftUpperX = 0, LeftUpperY = 0, RightLowerX = 0, RightLowerY = 0; LeftUpperX = 0; LeftUpperY = 0; RightLowerX = 0; RightLowerY = 0; calculateBorders(ref LeftUpperX, ref LeftUpperY, ref RightLowerX, ref RightLowerY, vectorImages[num]); //// foreach (var i in vectorImages[num].polyLines) { for (int j = 0; j < i.Count; j++) { i[j].X -= (float)LeftUpperX; i[j].Y = (float)LeftUpperY - i[j].Y; } } //foreach (var i in vectorImages[num].arcs) //{ // i.UpperLeft.X -= (float)LeftUpperX; // i.UpperLeft.Y = (float)LeftUpperY - i.UpperLeft.Y; //} foreach (var i in vectorImages[num].circles) { i.center.X -= (float)LeftUpperX; i.center.Y = (float)LeftUpperY - i.center.Y; } rebuild_images(); } } }