private void btnLosowaFigura_Click(object sender, EventArgs e)
        {
            btnNew_place.Enabled  = false;
            btnRandom_los.Enabled = false;
            chlbFigury.Enabled    = false;
            int       pj_Xp, pj_Yp;
            Color     pj_Kolor;
            int       pj_GruboscLinii;
            DashStyle pj_Dashstyle;
            int       pj_R;
            Random    pj_LiczbaLosowa = new Random();
            int       pj_Xmax         = this.imgPlansza.Width;
            int       pj_Ymax         = this.imgPlansza.Height;

            pj_Xp           = pj_LiczbaLosowa.Next(pj_Margines, pj_Xmax - pj_Margines);
            pj_Yp           = pj_LiczbaLosowa.Next(pj_Margines, pj_Ymax - pj_Margines);
            pj_Kolor        = Color.FromArgb(pj_LiczbaLosowa.Next(0, 256), pj_LiczbaLosowa.Next(0, 256), pj_LiczbaLosowa.Next(0, 256));
            pj_GruboscLinii = pj_LiczbaLosowa.Next(1, 10);
            pj_R            = pj_LiczbaLosowa.Next(5, pj_Ymax / 4);
            switch (pj_LiczbaLosowa.Next(1, 5))
            {
            case 1:
                pj_Dashstyle = DashStyle.Solid;
                break;

            case 2:
                pj_Dashstyle = DashStyle.Dot;
                break;

            case 3:
                pj_Dashstyle = DashStyle.Dash;
                break;

            case 4:
                pj_Dashstyle = DashStyle.DashDot;
                break;

            case 5:
                pj_Dashstyle = DashStyle.DashDotDot;
                break;

            default:
                pj_Dashstyle = System.Drawing.Drawing2D.DashStyle.Solid;
                break;
            }
            CheckedListBox.CheckedIndexCollection pj_WybranaFigura = chlbFigury.CheckedIndices;
            Random los = new Random();

            switch (los.Next(0, 6))
            {
            case 0:
                TPunkt p1 = new TPunkt(pj_Xp, pj_Yp);
                p1.UstawieniaAtrybutowGraficznych(pj_Kolor, pj_GruboscLinii, pj_Dashstyle);
                p1.Wykresl();
                break;

            case 1:
                TLinia l1 = new TLinia(pj_Xp, pj_Yp);
                l1.UstawieniaAtrybutowGraficznych(pj_Kolor, pj_GruboscLinii, pj_Dashstyle);
                l1.Wykresl();
                break;

            case 2:
                TOkrag o1 = new TOkrag(pj_Xp, pj_Yp, pj_R);
                o1.UstawieniaAtrybutowGraficznych(pj_Kolor, pj_GruboscLinii, pj_Dashstyle);
                o1.Wykresl();
                break;

            case 3:
                TFillOkrag fo1 = new TFillOkrag(pj_Xp, pj_Yp, pj_R);
                fo1.UstawieniaAtrybutowGraficznych(pj_Kolor, pj_GruboscLinii, pj_Dashstyle);
                fo1.Wykresl();
                break;

            case 4:
                TProstokat pr1 = new TProstokat(pj_Xp, pj_Yp);
                pr1.UstawieniaAtrybutowGraficznych(pj_Kolor, pj_GruboscLinii, pj_Dashstyle);
                pr1.Wykresl();
                break;

            case 5:
                TKwadrat k1 = new TKwadrat(pj_Xp, pj_Yp);
                k1.UstawieniaAtrybutowGraficznych(pj_Kolor, pj_GruboscLinii, pj_Dashstyle);
                k1.Wykresl();
                break;

            case 6:
                Ttrojkat t1 = new Ttrojkat(pj_Xp, pj_Yp);
                t1.UstawieniaAtrybutowGraficznych(pj_Kolor, pj_GruboscLinii, pj_Dashstyle);
                t1.Wykresl();
                break;

            case 7:
                TtrojkatProstokatny tp1 = new TtrojkatProstokatny(pj_Xp, pj_Yp);
                tp1.UstawieniaAtrybutowGraficznych(pj_Kolor, pj_GruboscLinii, pj_Dashstyle);
                tp1.Wykresl();
                break;

            default:
                ERROR.SetError(btnStart, "ERROR: nierozpoznana figura geometryczna");
                return;
            }
        }
        private void btnStart_Click(object sender, EventArgs e)
        {
            //TPunkt A = new TPunkt(200, 100, Color.Red);
            //A.Wykresl();
            //TOkrag O1 = new TOkrag(100, 50, 30);
            //O1.Wykresl();
            //O1.UstawXY(150, 100);
            //TPunkt Figura = O1;
            //Figura.Wykresl();


            int pj_N;

            if (!int.TryParse(txtLiczbaFigur.Text, out pj_N))
            {
                ERROR.SetError(txtLiczbaFigur, "ERROR: Błąd w zapisie liczności figur");
                return;
            }
            else
            {
                txtLiczbaFigur.Enabled = false;
                ERROR.Dispose();
            }
            if (pj_N <= 0)
            {
                ERROR.SetError(txtLiczbaFigur, "ERROR: Liczba figur musi być > 0");
                return;
            }
            else
            {
                ERROR.Dispose();
            }
            if (chlbFigury.CheckedItems.Count <= 0)
            {
                ERROR.SetError(btnStart, "ERROR: Nie wybrano figury!");
                return;
            }
            else
            {
                ERROR.Dispose();
            }
            btnRandom_los.Enabled = true;
            btnNew_place.Enabled  = true;
            btnStart.Enabled      = false;
            pj_TablicaFigur       = new TPunkt[pj_N];
            pj_IndexTablicyFigur  = 0;
            int[] pj_TablicaWybranychFigur      = new int[chlbFigury.CheckedItems.Count];
            int   pj_IndexTablicyWybranychFigur = 0;

            foreach (object WybranaFigura in chlbFigury.CheckedItems)
            {
                pj_TablicaWybranychFigur[pj_IndexTablicyWybranychFigur++] = chlbFigury.Items.IndexOf(WybranaFigura);
            }

            int       pj_Xp, pj_Yp;
            Color     pj_Kolor;
            int       pj_GruboscLinii;
            DashStyle pj_Dashstyle;
            int       pj_R;
            Random    pj_LiczbaLosowa = new Random();
            int       pj_Xmax         = this.imgPlansza.Width;
            int       pj_Ymax         = this.imgPlansza.Height;

            for (int i = 0; i < pj_TablicaFigur.Length; i++)
            {
                pj_Xp           = pj_LiczbaLosowa.Next(pj_Margines, pj_Xmax - pj_Margines);
                pj_Yp           = pj_LiczbaLosowa.Next(pj_Margines, pj_Ymax - pj_Margines);
                pj_Kolor        = Color.FromArgb(pj_LiczbaLosowa.Next(0, 256), pj_LiczbaLosowa.Next(0, 256), pj_LiczbaLosowa.Next(0, 256));
                pj_GruboscLinii = pj_LiczbaLosowa.Next(1, 10);
                pj_R            = pj_LiczbaLosowa.Next(5, pj_Ymax / 4);
                switch (pj_LiczbaLosowa.Next(1, 5))
                {
                case 1:
                    pj_Dashstyle = DashStyle.Solid;
                    break;

                case 2:
                    pj_Dashstyle = DashStyle.Dot;
                    break;

                case 3:
                    pj_Dashstyle = DashStyle.Dash;
                    break;

                case 4:
                    pj_Dashstyle = DashStyle.DashDot;
                    break;

                case 5:
                    pj_Dashstyle = DashStyle.DashDotDot;
                    break;

                default:
                    pj_Dashstyle = System.Drawing.Drawing2D.DashStyle.Solid;
                    break;
                }
                CheckedListBox.CheckedIndexCollection pj_WybranaFigura = chlbFigury.CheckedIndices;
                switch (pj_WybranaFigura[i % pj_WybranaFigura.Count])
                {
                case 0:
                    pj_TablicaFigur[i] = new TPunkt(pj_Xp, pj_Yp);
                    pj_TablicaFigur[i].UstawieniaAtrybutowGraficznych(pj_Kolor, pj_GruboscLinii, pj_Dashstyle);
                    TPunkt p1 = pj_TablicaFigur[i] as TPunkt;
                    p1.Wykresl();
                    break;

                case 1:
                    pj_TablicaFigur[i] = new TLinia(pj_Xp, pj_Yp);
                    pj_TablicaFigur[i].UstawieniaAtrybutowGraficznych(pj_Kolor, pj_GruboscLinii, pj_Dashstyle);
                    TPunkt l1 = pj_TablicaFigur[i] as TLinia;
                    l1.Wykresl();
                    break;

                case 2:
                    pj_TablicaFigur[i] = new TOkrag(pj_Xp, pj_Yp, pj_R);
                    pj_TablicaFigur[i].UstawieniaAtrybutowGraficznych(pj_Kolor, pj_GruboscLinii, pj_Dashstyle);
                    TPunkt o1 = pj_TablicaFigur[i] as TOkrag;
                    o1.Wykresl();
                    break;

                case 3:
                    pj_TablicaFigur[i] = new TFillOkrag(pj_Xp, pj_Yp, pj_R);
                    pj_TablicaFigur[i].UstawieniaAtrybutowGraficznych(pj_Kolor, pj_GruboscLinii, pj_Dashstyle);
                    TPunkt fo1 = pj_TablicaFigur[i] as TFillOkrag;
                    fo1.Wykresl();
                    break;

                case 4:
                    pj_TablicaFigur[i] = new TProstokat(pj_Xp, pj_Yp);
                    pj_TablicaFigur[i].UstawieniaAtrybutowGraficznych(pj_Kolor, pj_GruboscLinii, pj_Dashstyle);
                    TPunkt pr1 = pj_TablicaFigur[i] as TProstokat;
                    pr1.Wykresl();
                    break;

                case 5:
                    pj_TablicaFigur[i] = new TKwadrat(pj_Xp, pj_Yp);
                    pj_TablicaFigur[i].UstawieniaAtrybutowGraficznych(pj_Kolor, pj_GruboscLinii, pj_Dashstyle);
                    TPunkt k1 = pj_TablicaFigur[i] as TKwadrat;
                    k1.Wykresl();
                    break;

                case 6:
                    pj_TablicaFigur[i] = new Ttrojkat(pj_Xp, pj_Yp);
                    pj_TablicaFigur[i].UstawieniaAtrybutowGraficznych(pj_Kolor, pj_GruboscLinii, pj_Dashstyle);
                    TPunkt t1 = pj_TablicaFigur[i] as Ttrojkat;
                    t1.Wykresl();
                    break;

                case 7:
                    pj_TablicaFigur[i] = new TtrojkatProstokatny(pj_Xp, pj_Yp);
                    pj_TablicaFigur[i].UstawieniaAtrybutowGraficznych(pj_Kolor, pj_GruboscLinii, pj_Dashstyle);
                    TPunkt tp1 = pj_TablicaFigur[i] as TtrojkatProstokatny;
                    tp1.Wykresl();
                    break;

                default:
                    ERROR.SetError(btnStart, "ERROR: nierozpoznana figura geometryczna");
                    return;
                }
            }
        }