示例#1
0
 public Paard(int id, string naam, Paard moeder, Paard vader)
 {
     Id     = id;
     Naam   = naam;
     Moeder = moeder;
     Vader  = vader;
 }
        private void panel1_Paint(object sender, PaintEventArgs e)
        {
            if (startPaardID >= 1)
            {
                int      x = this.panel1.Width / 2;
                int      y = this.panel1.Height - 20;
                Graphics g = e.Graphics;

                Paard startPaard = fokkerij.Paarden.Find(p => p.Id == startPaardID);

                List <Paard> paardenTeTekenen          = new List <Paard>();
                List <Paard> oudersVanPaardenTeTekenen = new List <Paard>();

                paardenTeTekenen.Add(startPaard);

                while (paardenTeTekenen.Count > 0)
                {
                    foreach (Paard paard in paardenTeTekenen)
                    {
                        StamboomItem stamboomItem = new StamboomItem(new Point(x, y), paard);
                        panel1.Controls.Add(stamboomItem);
                        y += stamboomItem.Height;

                        bool heeftVader  = paard.Vader != null;
                        bool heeftMoeder = paard.Moeder != null;

                        if (heeftVader || heeftMoeder)
                        {
                            g.DrawLine(new Pen(Color.Black), x, y, x, y + 20);

                            y += 20;
                        }

                        if (heeftVader)
                        {
                            oudersVanPaardenTeTekenen.Add(paard.Vader);
                        }

                        if (heeftMoeder)
                        {
                            oudersVanPaardenTeTekenen.Add(paard.Moeder);
                        }
                    }

                    paardenTeTekenen.Clear();
                    paardenTeTekenen = oudersVanPaardenTeTekenen;
                    oudersVanPaardenTeTekenen.Clear();

                    i++;
                }
            }
        }
        public StamboomItem(System.Drawing.Point coordinatenMiddenOnder, Paard paard, int generatie)
        {
            this.coordinatenMiddenOnder = coordinatenMiddenOnder;

            this.Width  = 80;
            this.Height = 50;

            int x = coordinatenMiddenOnder.X + (int)this.Size.Width / 2;
            int y = coordinatenMiddenOnder.Y - (int)this.Size.Height;

            this.Location = new System.Drawing.Point(x, y);

            this.Paard = paard;

            this.ReadOnly  = true;
            this.Multiline = true;

            this.Text = generatie.ToString() + System.Environment.NewLine + paard.Id + " - " + paard.Naam;
        }