private void rysujObiektNaziemny(ObiektNaziemny on, Dystans d, Graphics g) { const int a = 20; Point pw = pozycjaWzgledna(on.X, on.Y); int x = pw.X, y = pw.Y; Pen p = new Pen(d == Dystans.Bezpieczny ? Color.White : Color.Red); p.Width = 1; g.DrawRectangle(p, x - a / 2, y - a / 2, a, a); g.DrawLine(p, x - a / 2, y - a / 2, x + a / 2, y + a / 2); g.DrawLine(p, x - a / 2, y + a / 2, x + a / 2, y - a / 2); StringFormat sf = new StringFormat(); sf.Alignment = StringAlignment.Center; sf.LineAlignment = StringAlignment.Center; g.DrawString(on.Nazwa, Font, d != Dystans.Kolizja ? Brushes.White : Brushes.Red, new Rectangle(x, y - a / 2 - 15, 0, 0), sf); }
private void button1_Click(object sender, EventArgs e) { if (radioButton1.Checked && idTextBox.Text.Length == 0) { MessageBox.Show("Podaj nazwę obiektu!"); return; } double x, y; if (!double.TryParse(xTextBox.Text, out x) || !double.TryParse(yTextBox.Text, out y)) { MessageBox.Show("Nieprawidłowe współrzędne!"); return; } Obiekt o; if (radioButton1.Checked) { o = new ObiektNaziemny(idTextBox.Text, x, y); } else { double wysokosc, predkosc, kierunek; if (!double.TryParse(wysokoscTextBox.Text, out wysokosc) || wysokosc < 0) { MessageBox.Show("Nieprawidłowa wartość wysokości!"); return; } if (!double.TryParse(predkoscTextBox.Text, out predkosc) || predkosc < 0) { MessageBox.Show("Nieprawidłowa wartość prędkości!"); return; } if (!double.TryParse(kierunekTextBox.Text, out kierunek)) { MessageBox.Show("Nieprawdiłowy kierunek!"); return; } o = new Samolot((owner.NextId), x, y, wysokosc, predkosc, kierunek); } owner.DodajObiekt(o); Close(); }
private void rysuj(Graphics g) { Dystans[] d = new Dystans[radar.Obiekty.Count]; for (int i = 0; i < d.Length; i++) { d[i] = Dystans.Bezpieczny; } for (int i = 0; i < radar.Obiekty.Count; i++) { Samolot s = radar.Obiekty[i] as Samolot; if (s == null || d[i] == Dystans.Kolizja) { continue; } for (int j = 0; j < radar.Obiekty.Count; j++) { if (radar.Kolizja(s, radar.Obiekty[j])) { d[i] = Dystans.Kolizja; d[j] = Dystans.Kolizja; break; } else if (radar.NiebezpiecznyDystans(s, radar.Obiekty[j])) { d[i] = Dystans.Niebezpieczny; d[j] = Dystans.Niebezpieczny; } } } g.Clear(Color.Black); for (int i = 0; i < radar.Obiekty.Count; i++) { if (radar.Obiekty[i] is ObiektNaziemny) { ObiektNaziemny on = radar.Obiekty[i] as ObiektNaziemny; rysujObiektNaziemny(on, d[i], g); } else if (radar.Obiekty[i] is Samolot) { Samolot s = radar.Obiekty[i] as Samolot; rysujSamolot(s, d[i], g); } } g.DrawLines(Pens.White, new Point[] { new Point(10, 40), new Point(5, 40), new Point(5, rozmiarEkranu.Height - 40), new Point(10, rozmiarEkranu.Height - 40) }); g.DrawLine(Pens.White, 5, rozmiarEkranu.Height / 2, 10, rozmiarEkranu.Height / 2); g.DrawLines(Pens.White, new Point[] { new Point(40, 10), new Point(40, 5), new Point(rozmiarEkranu.Width - 40, 5), new Point(rozmiarEkranu.Width - 40, 10) }); g.DrawLine(Pens.White, rozmiarEkranu.Width / 2, 5, rozmiarEkranu.Width / 2, 10); StringFormat sf = new StringFormat(); sf.Alignment = StringAlignment.Near; sf.LineAlignment = StringAlignment.Center; Point pb1 = pozycjaBezwzgledna(40, 40), pb2 = pozycjaBezwzgledna(rozmiarEkranu.Width / 2, rozmiarEkranu.Height / 2), pb3 = pozycjaBezwzgledna(rozmiarEkranu.Width - 40, rozmiarEkranu.Height - 40); g.DrawString(pb1.Y.ToString(), Font, Brushes.White, new Rectangle(12, 40, 0, 0), sf); g.DrawString(pb2.Y.ToString(), Font, Brushes.White, new Rectangle(12, rozmiarEkranu.Height / 2, 0, 0), sf); g.DrawString(pb3.Y.ToString(), Font, Brushes.White, new Rectangle(12, rozmiarEkranu.Height - 40, 0, 0), sf); sf.Alignment = StringAlignment.Center; sf.LineAlignment = StringAlignment.Near; g.DrawString(pb1.X.ToString(), Font, Brushes.White, new Rectangle(40, 12, 0, 0), sf); g.DrawString(pb2.X.ToString(), Font, Brushes.White, new Rectangle(rozmiarEkranu.Width / 2, 12, 0, 0), sf); g.DrawString(pb3.X.ToString(), Font, Brushes.White, new Rectangle(rozmiarEkranu.Width - 40, 12, 0, 0), sf); }