Ejemplo n.º 1
0
        private void rysujSamolot(Samolot s, Dystans d, Graphics g)
        {
            const int a = 24;
            Point     pw = pozycjaWzgledna(s.X, s.Y);
            int       x = pw.X, y = pw.Y;

            Point[] pkt = new Point[]
            {
                new Point(x - a / 3, y + a / 2),
                new Point(x, y - a / 2),
                new Point(x + a / 3, y + a / 2),
                new Point(x, y + a / 6),
                new Point(x - a / 3, y + a / 2)
            };
            pkt = obrocPunkty(pkt, new Point(x, y), s.Kierunek);
            Pen p = new Pen(d == Dystans.Bezpieczny ? Color.Green : Color.Red);

            p.Width = 1;
            if (d == Dystans.Kolizja)
            {
                g.FillPolygon(Brushes.DarkRed, pkt);
            }
            g.DrawLines(p, pkt);
            int r = Radar.MIN_ODLEGLOSC * Skala / 100;

            g.DrawEllipse(d == Dystans.Bezpieczny ? Pens.Gray : Pens.DarkRed, x - r, y - r, 2 * r, 2 * r);
            StringFormat sf = new StringFormat();

            sf.Alignment     = StringAlignment.Center;
            sf.LineAlignment = StringAlignment.Center;
            g.DrawString("S-" + s.Numer, Font, d != Dystans.Kolizja ? Brushes.White : Brushes.Red, new Rectangle(x, y - a / 2 - 15, 0, 0), sf);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }