private void mainPictureBox_MouseMove(object sender, MouseEventArgs e) { if (signPictureBoxIsClicked) { newSignPictureBoxMain.Location = new Point(e.X + mainPictureBox.Location.X, e.Y + mainPictureBox.Location.Y); } else { if (draggedSignPictureBoxIsClicked) { newSignPictureBoxMain.Location = new Point(e.X + mainPictureBox.Location.X, newSignPictureBoxMain.Location.Y); if (newSignPictureBoxMain.Location.X + newSignPictureBoxMain.Width / 10 > mainPictureBox.Width + mainPictureBox.Location.X) { SignDrawing removableSignDrawing = null; foreach (SignDrawing sg in RoadDrawing.getRoadDrawing().signDrawings) { if (sg.COORDINATS.X == previousCoordinats.X && sg.COORDINATS.Y == previousCoordinats.Y) { removableSignDrawing = sg; } } RoadDrawing.getRoadDrawing().signDrawings.Remove(removableSignDrawing); if (RoadDrawing.getRoadDrawing().signDrawings.Count == 3) { signPictureBox.Enabled = true; signPictureBox.Image = Image.FromFile("..\\..\\images\\sign_icon.png"); } this.Controls.Remove(newSignPictureBoxMain); signsPictureBoxes.Remove(newSignPictureBoxMain); draggedSignPictureBoxIsClicked = false; } } } if (trafficLightPictureBoxIsCLicked) { topDraggedTrafficLightPictureBox.Location = new Point(e.X + mainPictureBox.Location.X, e.Y + mainPictureBox.Location.Y); } else { if (draggedTrafficLightPictureBoxIsClicked) { topDraggedTrafficLightPictureBox.Location = new Point(e.X + mainPictureBox.Location.X, topDraggedTrafficLightPictureBox.Location.Y); if (Road.getRoad().COUNTOFWAYS == 2) { bottomTrafficLightPictureBox.Location = new Point(e.X + mainPictureBox.Location.X, bottomTrafficLightPictureBox.Location.Y); } if (topDraggedTrafficLightPictureBox.Location.X + topDraggedTrafficLightPictureBox.Width / 10 > mainPictureBox.Width + mainPictureBox.Location.X) { if (Road.getRoad().COUNTOFWAYS == 2) { this.Controls.Remove(bottomTrafficLightPictureBox); } this.Controls.Remove(topDraggedTrafficLightPictureBox); TrafficLightDrawing.getTrafficLightDrawing().COORDINATS.Clear(); Road.getRoad().TRAFFICLIGHTS.Clear(); foreach (StripeDrawing sd in RoadDrawing.getRoadDrawing().STRIPEDRAWINGS) { foreach (CarDrawing cd in sd.carsDrawings) { if (cd.car.stayByTrafficLight) { cd.car.stayByTrafficLight = false; cd.car.speed = cd.car.initialSpeed; } } } trafficLightTimer.Stop(); trafficLightPictureBox.Enabled = true; trafficLightPictureBox.Image = Image.FromFile("..\\..\\images\\traffic_light_icon.jpg"); draggedTrafficLightPictureBoxIsClicked = false; } } } }
private void initTopDraggedSignPictureBox() //args PictureBox...????? { startPoint = signPictureBox.Location; PictureBox newSignPictureBox = new PictureBox(); signPictureBoxIsClicked = true; newSignPictureBox.Image = signPictureBox.Image; newSignPictureBox.Size = signPictureBox.Size; newSignPictureBox.SizeMode = PictureBoxSizeMode.StretchImage; newSignPictureBox.Location = signPictureBox.Location; newSignPictureBox.BackColor = Color.WhiteSmoke; newSignPictureBox.MouseMove += (s, arg) => { if (signPictureBoxIsClicked) { newSignPictureBox.Left += signPictureBox.Location.X - startPoint.X; newSignPictureBox.Top += signPictureBox.Location.Y - startPoint.Y; } }; newSignPictureBox.MouseClick += (s, arg) => { if (signPictureBoxIsClicked) { //if чтобы положить его сожно только в mainPB signPictureBoxIsClicked = false; newSignPictureBox.Height = mainPictureBox.Height / 14; newSignPictureBox.Width = newSignPictureBox.Height; SignDrawing addedSignDrawing = new SignDrawing(); addedSignDrawing.COORDINATS = newSignPictureBox.Location; //signDrawings.AddLast(addedSignDrawing); RoadDrawing.getRoadDrawing().signDrawings.AddLast(addedSignDrawing); if (RoadDrawing.getRoadDrawing().signDrawings.Count == 4) { signPictureBox.Enabled = false; signPictureBox.Image = Image.FromFile("..\\..\\images\\not_enabled_sign_icon.png"); } SetSignForm setSignForm = new SetSignForm(addedSignDrawing); setSignForm.ShowDialog(); Road.getRoad().SIGNS.AddLast(addedSignDrawing.SIGN); addedSignDrawing.getSignGraphic(Graphics.FromImage(newSignPictureBox.Image)); signsPictureBoxes.AddLast(newSignPictureBox); newSignPictureBox.Invalidate(); newSignPictureBox.Invalidate(); newSignPictureBox.Invalidate(); } else { if (draggedSignPictureBoxIsClicked) { draggedSignPictureBoxIsClicked = false; PictureBox pb = (PictureBox)s; foreach (SignDrawing sd in RoadDrawing.getRoadDrawing().signDrawings) { if ((sd.COORDINATS.X == previousCoordinats.X) && (sd.COORDINATS.Y == previousCoordinats.Y)) { sd.COORDINATS = pb.Location; } } } else { draggedSignPictureBoxIsClicked = true; newSignPictureBoxMain = signsPictureBoxes.Find((PictureBox)s).Value; previousCoordinats = newSignPictureBoxMain.Location; } } }; newSignPictureBox.DoubleClick += (s, arg) => { draggedSignPictureBoxIsClicked = false; PictureBox pb = (PictureBox)s; foreach (SignDrawing sg in RoadDrawing.getRoadDrawing().signDrawings) { if (sg.COORDINATS == pb.Location) { SetSignForm ssf = new SetSignForm(sg); ssf.ShowDialog(); sg.getSignGraphic(Graphics.FromImage(pb.Image)); pb.Invalidate(); } } pb.Invalidate(); pb.Invalidate(); newSignPictureBox.Invalidate(); newSignPictureBox.Invalidate(); newSignPictureBox.Invalidate(); }; newSignPictureBox.Paint += (s, arg) => { PictureBox pb = (PictureBox)s; foreach (SignDrawing sg in RoadDrawing.getRoadDrawing().signDrawings) { if (sg.COORDINATS.X == pb.Location.X && sg.COORDINATS.Y == pb.Location.Y) { sg.getSignGraphic(Graphics.FromImage(pb.Image)); } } }; this.Controls.Add(newSignPictureBox); newSignPictureBoxMain = newSignPictureBox; signPictureBox.Image = Image.FromFile("..\\..\\images\\sign_icon.png"); newSignPictureBox.BringToFront(); }
public SetSignForm(SignDrawing sd) { InitializeComponent(); this.sd = sd; }