void pj_odswiez_i_odrysuj_1()
        {
            pj_Rysownica.Clear(pj_imgKolortla.BackColor);
            pj_imgRysownica.Refresh();
            Pen pen;

            pen = new Pen(Color.Red, 1);

            foreach (TFigura o in pj_lista_figur)
            {
                // odrysuj figury zgodnie z parametrami
                if (o is Kwadrat)
                {
                    Kwadrat p = (Kwadrat)o;
                    pj_LOG("rysuje kwadrat");

                    if (p.pj_Wypelniony)
                    {
                        pj_Rysownica.FillRectangle(new SolidBrush(o.pj_Color),
                                                   new Rectangle(p.pj_X, p.pj_Y, p.pj_Bok, p.pj_Bok));
                    }
                    else
                    {
                        pen.DashStyle = o.pj_Rodzaj_Linii;
                        pen.Color     = o.pj_Color;
                        pen.Width     = o.pj_Grubosc;
                        pj_Rysownica.DrawRectangle(pen,
                                                   new Rectangle(p.pj_X, p.pj_Y, p.pj_Bok, p.pj_Bok));
                    }
                }
                else
                if (o is Prostokat)
                {
                    Prostokat p = (Prostokat)o;
                    pj_LOG("rysuje prostokat " + o.pj_opisz());

                    if (o.pj_Wypelniony)
                    {
                        pj_Rysownica.FillRectangle(new SolidBrush(o.pj_Color), new Rectangle(p.pj_X, p.pj_Y, p.pj_Szerokosc, p.pj_Wysokosc));
                    }
                    else
                    {
                        pen.DashStyle = o.pj_Rodzaj_Linii;
                        pen.Color     = o.pj_Color;
                        pen.Width     = o.pj_Grubosc;
                        pj_Rysownica.DrawRectangle(pen, new Rectangle(p.pj_X, p.pj_Y, p.pj_Szerokosc, p.pj_Wysokosc));
                    }
                }
                else
                if (o is Linia)
                {
                    Linia p = (Linia)o;
                    pen.DashStyle = o.pj_Rodzaj_Linii;
                    pen.Color     = o.pj_Color;
                    pen.Width     = o.pj_Grubosc;
                    pj_Rysownica.DrawLine(pen, p.pj_X, p.pj_Y, p.pj_X + p.pj_Szerokosc, p.pj_Y + p.pj_Wysokosc);



                    pj_LOG("rysuje linia");
                }
                else
                if (o is Kolo)
                {
                    Kolo p = (Kolo)o;
                    pj_LOG("rysuje kolo");


                    if (o.pj_Wypelniony)
                    {
                        pj_Rysownica.FillEllipse(new SolidBrush(o.pj_Color), new Rectangle(p.pj_X, p.pj_Y, p.pj_Szerokosc, p.pj_Wysokosc));
                    }
                    else
                    {
                        pen.DashStyle = o.pj_Rodzaj_Linii;
                        pen.Color     = o.pj_Color;
                        pen.Width     = o.pj_Grubosc;
                        pj_Rysownica.DrawEllipse(pen,
                                                 new Rectangle(p.pj_X, p.pj_Y, p.pj_Szerokosc, p.pj_Wysokosc));
                    }
                }
            }
            pj_imgRysownica.Refresh();
        }
        private void pj_imgRysownica_MouseUp(object sender, MouseEventArgs e)
        {
            pj_imgRysownica.Refresh();
            Color kolor   = pj_imgKolorlinii.BackColor;
            int   grubosc = int.Parse(pj_txtGrubosc.Text);

            pj_lblX.Text = e.Location.X.ToString();
            pj_lblY.Text = e.Location.Y.ToString();
            int pj_LewyGórnyNarożnikX, pj_LewyGórnyNarożnikY;

            if (pj_Punkt.X > e.Location.X)
            {
                pj_LewyGórnyNarożnikX = e.Location.X;
            }
            else
            {
                pj_LewyGórnyNarożnikX = pj_Punkt.X;
            }
            if (pj_Punkt.Y > e.Location.Y)
            {
                pj_LewyGórnyNarożnikY = e.Location.Y;
            }
            else
            {
                pj_LewyGórnyNarożnikY = pj_Punkt.Y;
            }
            int pj_Szerokość, pj_Wysokość;

            if (e.Button == System.Windows.Forms.MouseButtons.Left)
            {
                if (pj_rdbOlówek.Checked)
                {
                    pj_Rysownica.DrawLine(pj_Pióro, pj_Punkt, e.Location);
                    pj_imgRysownica.Invalidate();
                }
                if (pj_rdbFigury.Checked)
                {
                    if (pj_rdbOkrąg.Checked)
                    {
                        pj_Szerokość = e.Location.X - pj_Punkt.X;
                        pj_Wysokość  = pj_Szerokość;
                        pj_Rysownica.DrawEllipse(pj_Pióro, new Rectangle(pj_Punkt.X, e.Location.Y, pj_Szerokość, pj_Szerokość));
                        pj_imgRysownica.Refresh();


                        // elipsa
                        Kolo noweKolo = new Kolo();
                        noweKolo.pj_Szerokosc = pj_Szerokość;
                        noweKolo.pj_Wysokosc  = pj_Wysokość;
                        noweKolo.pj_UstawXY(pj_Punkt.X, pj_Punkt.Y);
                        noweKolo.pj_Wypelniony = false;
                        noweKolo.pj_Pioro      = pj_Pióro;
                        noweKolo.pj_Color      = kolor;
                        noweKolo.pj_Grubosc    = grubosc;
                        pj_lista_figur.Add(noweKolo);


                        pj_LOG("Dodano okrag");
                    }
                    if (pj_rdbElipsa.Checked)
                    {
                        pj_Szerokość = e.Location.X - pj_Punkt.X;
                        pj_Wysokość  = e.Location.Y - pj_Punkt.Y;
                        pj_Rysownica.DrawEllipse(pj_Pióro, new Rectangle(pj_Punkt.X, pj_Punkt.Y, pj_Szerokość, pj_Wysokość));
                        pj_imgRysownica.Refresh();
                        Kolo noweKolo = new Kolo();
                        noweKolo.pj_Szerokosc = pj_Szerokość;
                        noweKolo.pj_Wysokosc  = pj_Wysokość;
                        noweKolo.pj_UstawXY(pj_Punkt.X, pj_Punkt.Y);
                        noweKolo.pj_Wypelniony = false;
                        noweKolo.pj_Pioro      = pj_Pióro;
                        noweKolo.pj_Color      = kolor;
                        noweKolo.pj_Grubosc    = grubosc;
                        pj_lista_figur.Add(noweKolo);


                        pj_LOG("Dodano elipsa");
                    }
                    if (pj_rdbKwadrat.Checked)
                    {
                        pj_Szerokość = Math.Abs(e.Location.X - pj_Punkt.X);
                        pj_Wysokość  = pj_Szerokość;

                        pj_Punkt.X = Math.Min(pj_Punkt.X, e.Location.X);
                        pj_Punkt.Y = Math.Min(pj_Punkt.Y, e.Location.Y);
                        pj_Rysownica.DrawRectangle(pj_Pióro, new Rectangle(pj_Punkt.X, pj_Punkt.Y, pj_Szerokość, pj_Wysokość));

                        Kwadrat nowyKwadrat = new Kwadrat();
                        nowyKwadrat.pj_Bok = pj_Szerokość;
                        nowyKwadrat.pj_UstawXY(pj_Punkt.X, pj_Punkt.Y);

                        nowyKwadrat.pj_Pioro   = pj_Pióro;
                        nowyKwadrat.pj_Color   = kolor;
                        nowyKwadrat.pj_Grubosc = grubosc;

                        pj_lista_figur.Add(nowyKwadrat);
                        pj_imgRysownica.Refresh();



                        pj_LOG("Dodano kwadrat");
                    }
                    if (pj_rdbProstokąt.Checked)
                    {
                        pj_Szerokość = Math.Abs(e.Location.X - pj_Punkt.X);
                        pj_Wysokość  = Math.Abs(e.Location.Y - pj_Punkt.Y);;
                        pj_Punkt.X   = Math.Min(pj_Punkt.X, e.Location.X);
                        pj_Punkt.Y   = Math.Min(pj_Punkt.Y, e.Location.Y);
                        pj_Rysownica.DrawRectangle(pj_Pióro, new Rectangle(pj_Punkt.X, pj_Punkt.Y, pj_Szerokość, pj_Wysokość));

                        Prostokat nowyProstokat = new Prostokat();
                        nowyProstokat.pj_Szerokosc = pj_Szerokość;
                        nowyProstokat.pj_Wysokosc  = pj_Wysokość;

                        nowyProstokat.pj_Pioro   = pj_Pióro;
                        nowyProstokat.pj_Color   = kolor;
                        nowyProstokat.pj_Grubosc = grubosc;


                        nowyProstokat.pj_UstawXY(pj_Punkt.X, pj_Punkt.Y);
                        pj_lista_figur.Add(nowyProstokat);
                        pj_imgRysownica.Refresh();


                        pj_LOG("Dodano prostokat");
                    }
                    if (pj_rdbLiniaProsta.Checked)
                    {
                        pj_Szerokość = e.Location.X - pj_Punkt.X;
                        pj_Wysokość  = e.Location.Y - pj_Punkt.Y;
                        pj_Rysownica.DrawLine(pj_Pióro, pj_Punkt.X, pj_Punkt.Y, pj_Punkt.X + pj_Szerokość, pj_Punkt.Y + pj_Wysokość);



                        // prostokat
                        Linia linia = new Linia();

                        linia.pj_Szerokosc = pj_Szerokość;
                        linia.pj_Wysokosc  = pj_Wysokość;

                        linia.pj_Pioro   = pj_Pióro;
                        linia.pj_Color   = kolor;
                        linia.pj_Grubosc = grubosc;

                        linia.pj_UstawXY(pj_Punkt.X, pj_Punkt.Y);
                        pj_lista_figur.Add(linia);
                        pj_imgRysownica.Refresh();
                        pj_LOG("Dodano linia prosta");
                    }
                    if (pj_rdbPelnyOkrag.Checked)
                    {
                        pj_Szerokość = e.Location.X - pj_Punkt.X;
                        pj_Wysokość  = pj_Szerokość;
                        pj_Rysownica.FillEllipse(pj_Pędzel, new Rectangle(pj_Punkt.X, e.Location.Y, pj_Szerokość, pj_Szerokość));

                        Kolo noweKolo = new Kolo();
                        noweKolo.pj_Szerokosc = pj_Szerokość;
                        noweKolo.pj_Wysokosc  = pj_Wysokość;
                        noweKolo.pj_UstawXY(pj_Punkt.X, pj_Punkt.Y);
                        noweKolo.pj_Wypelniony = true;
                        noweKolo.pj_Pedzel     = pj_Pędzel;
                        noweKolo.pj_Color      = kolor;
                        noweKolo.pj_Grubosc    = grubosc;
                        pj_lista_figur.Add(noweKolo);
                        pj_imgRysownica.Refresh();

                        pj_LOG("Dodano wypelniony okrag");
                    }
                    if (pj_rdbFillElipsa.Checked)
                    {
                        pj_Szerokość = e.Location.X - pj_Punkt.X;
                        pj_Wysokość  = e.Location.Y - pj_Punkt.Y;
                        pj_Rysownica.FillEllipse(pj_Pędzel, new Rectangle(pj_Punkt.X, pj_Punkt.Y, pj_Szerokość, pj_Wysokość));

                        Kolo noweKolo = new Kolo();
                        noweKolo.pj_Szerokosc = pj_Szerokość;
                        noweKolo.pj_Wysokosc  = pj_Wysokość;
                        noweKolo.pj_UstawXY(pj_Punkt.X, pj_Punkt.Y);
                        noweKolo.pj_Wypelniony = true;
                        noweKolo.pj_Pedzel     = pj_Pędzel;
                        noweKolo.pj_Color      = kolor;
                        pj_lista_figur.Add(noweKolo);

                        pj_imgRysownica.Refresh();

                        pj_LOG("Dodano wypelniona elipsa");
                    }
                    if (pj_rdbPelnyKwadrat.Checked)
                    {
                        pj_Szerokość = Math.Abs(e.Location.X - pj_Punkt.X);
                        pj_Wysokość  = pj_Szerokość;
                        pj_Punkt.X   = Math.Min(pj_Punkt.X, e.Location.X);
                        pj_Punkt.Y   = Math.Min(pj_Punkt.Y, e.Location.Y);
                        pj_Rysownica.FillRectangle(pj_Pędzel, new Rectangle(pj_Punkt.X, pj_Punkt.Y, pj_Szerokość, pj_Szerokość));
                        pj_imgRysownica.Refresh();

                        Kwadrat nowyKwadrat = new Kwadrat();
                        nowyKwadrat.pj_Bok = pj_Szerokość;
                        nowyKwadrat.pj_UstawXY(pj_Punkt.X, pj_Punkt.Y);
                        nowyKwadrat.pj_Wypelniony = true;
                        nowyKwadrat.pj_Pedzel     = pj_Pędzel;
                        nowyKwadrat.pj_Color      = kolor;
                        pj_lista_figur.Add(nowyKwadrat);

                        pj_imgRysownica.Refresh();

                        pj_LOG("Dodano wypelniony kwadrat");
                    }
                    if (pj_rdbPelnyProstokat.Checked)
                    {
                        pj_Szerokość = Math.Abs(e.Location.X - pj_Punkt.X);
                        pj_Wysokość  = Math.Abs(e.Location.Y - pj_Punkt.Y);;
                        pj_Punkt.X   = Math.Min(pj_Punkt.X, e.Location.X);
                        pj_Punkt.Y   = Math.Min(pj_Punkt.Y, e.Location.Y);
                        pj_Rysownica.FillRectangle(pj_Pędzel, new Rectangle(pj_Punkt.X, pj_Punkt.Y, pj_Szerokość, pj_Wysokość));

                        Prostokat nowyProstokat = new Prostokat();
                        nowyProstokat.pj_Szerokosc  = pj_Szerokość;
                        nowyProstokat.pj_Wysokosc   = pj_Wysokość;
                        nowyProstokat.pj_Pedzel     = pj_Pędzel;
                        nowyProstokat.pj_Wypelniony = true;
                        nowyProstokat.pj_Color      = kolor;
                        nowyProstokat.pj_UstawXY(pj_Punkt.X, pj_Punkt.Y);
                        pj_lista_figur.Add(nowyProstokat);
                        pj_imgRysownica.Refresh();


                        pj_LOG("Dodano wypelniony prostokat");
                    }
                }
                if (pj_rdbGumka.Checked)
                {
                }
                if (pj_rdbOlówek.Checked != true && pj_rdbFigury.Checked != true && pj_rdbGumka.Checked != true)
                {
                    pj_error.SetError(pj_grbNarzedzia, "Musisz wybrać opcję");
                }
                else
                {
                    pj_error.Dispose();
                }
            }
        }