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(); } } }