Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Drawing.Drawing2D;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- namespace Projekt3_Podlecki63427
- {
- public partial class IndywidualnyNr3_Podlecki63427 : Form
- {
- // deklaracje stałych
- const ushort PromieńPunktu = 2;
- // deklaracja zmiennych referencyjnych narzędzi graficznych
- Graphics Rysownica;
- Pen Pióro;
- SolidBrush Pędzel;
- Point Punkt = Point.Empty;
- //Point[] punkty = {
- //new Point(0, 100),
- //new Point(50, 80),
- //new Point(100, 20),
- //new Point(150, 80),
- //new Point(200, 100)};
- struct OpisKrzywejKardynalnej
- {
- public Point PunktP02;
- public Point PunktP12;
- public Point PunktP22;
- public Point PunktP32;
- public ushort NumerPunktuKontrolnego2;
- public ushort PromieńPunktuKontrolnego2;
- }
- OpisKrzywejKardynalnej Kardynalna;
- struct OpisKrzywejBeziera
- {
- public Point PunktP0;
- public Point PunktP1;
- public Point PunktP2;
- public Point PunktP3;
- public ushort NumerPunktuKontrolnego;
- public ushort PromieńPunktuKontrolnego;
- }
- // deklaracja zmiennej dla Beziera
- OpisKrzywejBeziera Bezier;
- Font FontOpisuPunktów = new Font("Arial", 10, FontStyle.Italic);
- public IndywidualnyNr3_Podlecki63427()
- {
- InitializeComponent();
- //"podpięcie" do kontrolki pbRysownica mapy bitowej
- pbRysownica.Image = new Bitmap(pbRysownica.Width, pbRysownica.Height);
- // utworzenie egzemplarza powierzchni graficznej na BitMapie
- Rysownica = Graphics.FromImage(pbRysownica.Image);
- // utworznie egzmplarzy narzędzi graficznych
- Pióro = new Pen(Color.Red, 1.7F);
- Pióro.DashStyle = DashStyle.Dash;
- Pióro.StartCap = LineCap.Round;
- Pióro.EndCap = LineCap.Round;
- Pędzel = new SolidBrush(Color.Blue);
- }
- private void IndywidualnyNr3_Podlecki63427_Load(object sender, EventArgs e)
- {
- }
- private void IndywidualnyNr3_Podlecki63427_FormClosing(object sender, FormClosingEventArgs e)
- {
- //Wypisanie w oknie dialogowym MessageBox pytania, czy rzeczywiście ma
- DialogResult OknoMessageBox = MessageBox.Show("Czy rzeczywiście chcesz zamknąć ten formularz i powrócić do KokpituProjektuNr3",
- this.Text, MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button3);
- //odzczytanie decyzji Użytkownika programu
- if (OknoMessageBox == DialogResult.Yes)
- {//odszukanie egzemplarza formularza głównego : KokpitProjektuNr3
- foreach (Form Formularz in Application.OpenForms)
- {
- //Sprawdzenie czy zmienna referencyjna formularza określa poszukiwany formularz
- if (Formularz.Name == "KokpitProjektuNr3_Garlicki63501")
- {
- //ukryczie formularza bierzącego
- this.Hide();
- //odsłoniecie formularza głównego
- Formularz.Show();
- //potwierdzenie zamkniecia formularza
- e.Cancel = true;
- //zakończenie obsługi zdarzenia FormClosing
- return;
- }
- //Ktoś nie chcący usuna egzemplarz formularza kokpit projektu 2
- //gdy jesteśmy tutaj to ktoś nie chcąco usunął egzemtlarz formularza głównego z kolekcji OpenForms
- //utworzenie nowego egzemtlarza formularza głównego
- KokpitProjektuNr3_Podlecki63427 FormularzGłówny = new KokpitProjektuNr3_Podlecki63427();
- //ukrycie gierzącego formularza
- this.Hide();
- //odsłonięcie formularza głównego
- FormularzGłówny.Show();
- //potweirdzenie przez parametr 'e' zamknięcie formularza
- e.Cancel = true;
- //wyjście z metody obsługi zdarzenia FormClosing
- return;
- }
- }
- else
- {
- //anulowanie zamkniecia formularza bierzącego
- e.Cancel = false;
- }
- }
- private void pbRysownica_MouseDown(object sender, MouseEventArgs e)
- {// wizualizacja współrzędnych aktualnego położenia myszy
- lblX.Text = e.Location.X.ToString();
- lblY.Text = e.Location.Y.ToString();
- if (e.Button == MouseButtons.Left)
- // zapamiętanie "miejsca" kliknięcia
- Punkt = e.Location;
- }
- private void pbRysownica_MouseMove(object sender, MouseEventArgs e)
- {
- // wizualizacja współrzędnych aktualnego położenia myszy
- lblX.Text = e.Location.X.ToString();
- lblY.Text = e.Location.Y.ToString();
- // czy zdarzenie MouseMove jest wywołane w trakcie wciśniętego lewego przycisku myszy
- if (e.Button == MouseButtons.Left)
- {
- //if (rdbLiniaKreślonaMyszką.Checked)
- ////wykreślenie linii
- //{
- // Rysownica.DrawLine(Pióro, Punkt.X, Punkt.Y, e.Location.X, e.Location.Y);
- // Punkt = e.Location;
- //}
- }
- // odświeżenie powierzchni graficznej
- pbRysownica.Refresh();
- }
- private void pbRysownica_MouseUp(object sender, MouseEventArgs e)
- {
- // wizualizacja współrzędnych aktualnego położenia myszy
- lblX.Text = e.Location.X.ToString();
- lblY.Text = e.Location.Y.ToString();
- // ustalenie parametrów prostokąta, w którym będą narysowane figury geometryczne
- int LewyGórnyNarożnikX = (Punkt.X > e.Location.X) ? e.Location.X : Punkt.X;
- int LewyGórnyNarożnikY = (Punkt.Y > e.Location.Y) ? e.Location.Y : Punkt.Y;
- int Szerokość = Math.Abs(Punkt.X - e.Location.X);
- int Wysokość = Math.Abs(Punkt.Y - e.Location.Y);
- // sprawdzenie czy zdarzenie MouseUp zostało "wywołane" zwolnieniem lewego przycisku myszy
- if (e.Button == MouseButtons.Left)
- {
- //if (rdbKwadrat.Checked)
- //{
- // int PromieńWielokąta; // == promień okręgu opisanego na wierzchołkach wielokąta
- // // ustawienie stanu braku aktywności dla kontrolki umożliwiającej ustalenie liczby kątów
- // double KątMiędzyWierzchołkamiWielokąta = 90.0;
- // double KątPołożeniaPierwszegoWierzchołkaWielokąta = 0.0;
- // // obliczenie promienia wielokąta
- // PromieńWielokąta = Szerokość;
- // // wyznaczenie współrzędnych wierzchołków wielokąta
- // Point[] WierzchołkiWielokąta = new Point[4];
- // for (int i = 0; i < 4; i++)
- // {
- // WierzchołkiWielokąta[i].X = LewyGórnyNarożnikX +
- // (int)(PromieńWielokąta * Math.Cos(Math.PI * (KątPołożeniaPierwszegoWierzchołkaWielokąta +
- // i * KątMiędzyWierzchołkamiWielokąta) / 180));
- // WierzchołkiWielokąta[i].Y = LewyGórnyNarożnikY -
- // (int)(PromieńWielokąta * Math.Sin(Math.PI * (KątPołożeniaPierwszegoWierzchołkaWielokąta +
- // i * KątMiędzyWierzchołkamiWielokąta) / 180));
- // }
- // // wykreślenie wielokąta
- // Rysownica.DrawPolygon(Pióro, WierzchołkiWielokąta);
- // //Rysownica.DrawRectangle(Pióro, Le);
- // //Rysownica.FillEllipse(Pędzel, Punkt.X - PromieńPunktu, Punkt.Y - PromieńPunktu, 2 * PromieńPunktu, 2 * PromieńPunktu);
- //}
- if (rdbProstokąt.Checked)
- {
- LewyGórnyNarożnikX = e.Location.X;
- LewyGórnyNarożnikY = e.Location.Y;
- Szerokość = Math.Abs(Punkt.X - e.Location.X);
- Wysokość = Math.Abs(Punkt.Y - e.Location.Y);
- Rysownica.DrawRectangle(Pióro, LewyGórnyNarożnikX, LewyGórnyNarożnikY, Szerokość, Wysokość);
- }
- if (rdbKwadrat.Checked)
- {
- //int PromieńWielokąta; // == promień okręgu opisanego na wierzchołkach wielokąta
- //// ustawienie stanu braku aktywności dla kontrolki umożliwiającej ustalenie liczby kątów
- //double KątMiędzyWierzchołkamiWielokąta = 90.0;
- //double KątPołożeniaPierwszegoWierzchołkaWielokąta = 0.0;
- //// obliczenie promienia wielokąta
- //PromieńWielokąta = Szerokość;
- //// wyznaczenie współrzędnych wierzchołków wielokąta
- //Point[] WierzchołkiWielokąta = new Point[4];
- //for (int i = 0; i < 4; i++)
- //{
- // WierzchołkiWielokąta[i].X = LewyGórnyNarożnikX +
- // (int)(PromieńWielokąta * Math.Cos(Math.PI * (KątPołożeniaPierwszegoWierzchołkaWielokąta +
- // i * KątMiędzyWierzchołkamiWielokąta) / 180));
- // WierzchołkiWielokąta[i].Y = LewyGórnyNarożnikY -
- // (int)(PromieńWielokąta * Math.Sin(Math.PI * (KątPołożeniaPierwszegoWierzchołkaWielokąta +
- // i * KątMiędzyWierzchołkamiWielokąta) / 180));
- //}
- //// wykreślenie wielokąta
- //Rysownica.DrawPolygon(Pióro, WierzchołkiWielokąta);
- LewyGórnyNarożnikX = e.Location.X;
- LewyGórnyNarożnikY = e.Location.Y;
- Szerokość = Math.Abs(Punkt.X - e.Location.X);
- Wysokość = Math.Abs(Punkt.Y - e.Location.Y);
- Szerokość = Wysokość;
- Rysownica.DrawRectangle(Pióro, LewyGórnyNarożnikX, LewyGórnyNarożnikY, Wysokość, Wysokość);
- }
- if (rdbProstokątWypełniony.Checked)
- {
- LewyGórnyNarożnikX = e.Location.X;
- LewyGórnyNarożnikY = e.Location.Y;
- Szerokość = Math.Abs(Punkt.X - e.Location.X);
- Wysokość = Math.Abs(Punkt.Y - e.Location.Y);
- Rysownica.FillRectangle(Pędzel, LewyGórnyNarożnikX, LewyGórnyNarożnikY, Szerokość, Wysokość);
- }
- if (rdbKwadratWypełniony.Checked)
- {
- LewyGórnyNarożnikX = e.Location.X;
- LewyGórnyNarożnikY = e.Location.Y;
- Szerokość = Math.Abs(Punkt.X - e.Location.X);
- Wysokość = Math.Abs(Punkt.Y - e.Location.Y);
- Szerokość = Wysokość;
- Rysownica.FillRectangle(Pędzel, LewyGórnyNarożnikX, LewyGórnyNarożnikY, Szerokość, Wysokość);
- }
- if (rdbElipsa.Checked)
- {
- LewyGórnyNarożnikX = e.Location.X;
- LewyGórnyNarożnikY = e.Location.Y;
- Szerokość = Math.Abs(Punkt.X - e.Location.X);
- Wysokość = Math.Abs(Punkt.Y - e.Location.Y);
- Rysownica.DrawEllipse(Pióro, LewyGórnyNarożnikX, LewyGórnyNarożnikY, Szerokość, Wysokość);
- }
- if (rdbElipsaWypełniona.Checked)
- {
- //LewyGórnyNarożnikX = e.Location.X;
- //LewyGórnyNarożnikY = e.Location.Y;
- //Szerokość = Math.Abs(Punkt.X - e.Location.X);
- //Wysokość = Math.Abs(Punkt.Y - e.Location.Y);
- Rysownica.FillEllipse(Pędzel, LewyGórnyNarożnikX, LewyGórnyNarożnikY, Szerokość, Wysokość);
- }
- if (rdbOkrąg.Checked)
- {
- LewyGórnyNarożnikX = e.Location.X;
- LewyGórnyNarożnikY = e.Location.Y;
- Szerokość = Math.Abs(Punkt.X - e.Location.X);
- Wysokość = Math.Abs(Punkt.Y - e.Location.Y);
- Szerokość = Wysokość;
- Rysownica.DrawEllipse(Pióro, LewyGórnyNarożnikX, LewyGórnyNarożnikY, Szerokość, Wysokość);
- }
- if (rdbKoło.Checked)
- {
- LewyGórnyNarożnikX = e.Location.X;
- LewyGórnyNarożnikY = e.Location.Y;
- Szerokość = Math.Abs(Punkt.X - e.Location.X);
- Wysokość = Math.Abs(Punkt.Y - e.Location.Y);
- Szerokość = Wysokość;
- Rysownica.FillEllipse(Pędzel, LewyGórnyNarożnikX, LewyGórnyNarożnikY, Szerokość, Wysokość);
- }
- if (rdbWOZKK.Checked)
- {
- int x02;
- int y02;
- int x12;
- int y12;
- int x22;
- int y22;
- int x32;
- int y32;
- // sprawdzenie czy to jest pierwszy Punkt P0 Krzywej Beziera
- if (gbWybórFoguriLinii.Enabled)
- {
- // ustawienie stanu na brak aktywności dla kontenera gbWybórFoguriLinii
- gbWybórFoguriLinii.Enabled = false;
- // ustawienie stanu początkowego tworzonego opisu Krzywej Beziera
- Kardynalna.NumerPunktuKontrolnego2 = 0;
- Kardynalna.PromieńPunktuKontrolnego2 = 5;
- // przechowanie współrzędnych aktualnego położenia myszy
- Kardynalna.PunktP02 = e.Location;
- // wizualizacja punktu P0
- using (SolidBrush Pędzel = new SolidBrush(Color.Black))
- {
- // wykreślenie punktu P0
- Rysownica.FillEllipse(Pędzel,
- e.Location.X - Kardynalna.PromieńPunktuKontrolnego2,
- e.Location.Y - Kardynalna.PromieńPunktuKontrolnego2,
- 2 * Kardynalna.PromieńPunktuKontrolnego2,
- 2 * Kardynalna.PromieńPunktuKontrolnego2);
- // wykreślenie opisu Punktu Kontrolnego P0
- Rysownica.DrawString("P" + Kardynalna.NumerPunktuKontrolnego2.ToString(), FontOpisuPunktów, Pędzel, e.Location);
- } // tutaj nastąpi zwolnienie pędzla
- // Od if (WybórFiguriLinii.Eneabled)
- }
- else
- {
- // przechowanie współrzędnych kolejnych punktów
- // zwiększenie licznika punktów kontrolnych
- Kardynalna.NumerPunktuKontrolnego2++;
- // przechowanie wartości współrzędnych punktu kontrolnego o numerze w kardynalna.NumerPunktuKontrolnego2
- switch (Kardynalna.NumerPunktuKontrolnego2)
- {
- case 1: Kardynalna.PunktP12 = e.Location; break;
- case 2: Kardynalna.PunktP22 = e.Location; break;
- case 3: Kardynalna.PunktP32 = e.Location; break;
- }
- // sprawdzenie czy to jest ostatni punkt krzywej kardynalnej
- if (Kardynalna.NumerPunktuKontrolnego2 < 3)
- {
- // wykreślenie punktu kontrolnegokrzywej kardynalnej
- using (SolidBrush Pędzel = new SolidBrush(Color.Red))
- {
- Rysownica.FillEllipse(Pędzel,
- e.Location.X - Kardynalna.PromieńPunktuKontrolnego2,
- e.Location.Y - Kardynalna.PromieńPunktuKontrolnego2,
- 2 * Kardynalna.PromieńPunktuKontrolnego2,
- 2 * Kardynalna.PromieńPunktuKontrolnego2);
- // wykreślenie opisu punktu kontrolnego
- Rysownica.DrawString("P" + Kardynalna.NumerPunktuKontrolnego2.ToString(), FontOpisuPunktów, Pędzel, e.Location);
- }
- }
- else
- {
- // wykreślenie punktu końcowego krzywej kardynalnej
- // wykreślenie punktu kontrolnego krzywej kardynalnej
- using (SolidBrush Pędzel = new SolidBrush(Color.Red))
- {
- Rysownica.FillEllipse(Pędzel,
- e.Location.X - Kardynalna.PromieńPunktuKontrolnego2,
- e.Location.Y - Kardynalna.PromieńPunktuKontrolnego2,
- 2 * Kardynalna.PromieńPunktuKontrolnego2,
- 2 * Kardynalna.PromieńPunktuKontrolnego2);
- // wykreślenie opisu punktu kontrolnego
- Rysownica.DrawString("P" + Kardynalna.NumerPunktuKontrolnego2.ToString(), FontOpisuPunktów, Pędzel, e.Location);
- }
- x02 = Kardynalna.PunktP02.X;
- y02 = Kardynalna.PunktP02.Y;
- x12 = Kardynalna.PunktP12.X;
- y12 = Kardynalna.PunktP12.Y;
- x22 = Kardynalna.PunktP22.X;
- y22 = Kardynalna.PunktP22.Y;
- x32 = Kardynalna.PunktP32.X;
- y32 = Kardynalna.PunktP32.Y;
- Point PunktP02 = new Point(x02, y02);
- Point PunktP12 = new Point(x12, y12);
- Point PunktP22 = new Point(x22, y22);
- Point PunktP32 = new Point(x32, y32);
- Point[] punkty = { PunktP02, PunktP12, PunktP22, PunktP32 };
- // wykreślenie krzywej kardynalnej
- Rysownica.FillClosedCurve(Pędzel, punkty);
- Rysownica.DrawClosedCurve(Pióro, punkty);
- //Rysownica.DrawCurve(Pióro, punkty);
- // ponowne uaktywnienie kontenera
- gbWybórFoguriLinii.Enabled = true;
- }
- }
- }
- if (rdbWZKK.Checked)
- {
- int x02;
- int y02;
- int x12;
- int y12;
- int x22;
- int y22;
- int x32;
- int y32;
- // sprawdzenie czy to jest pierwszy Punkt P0 Krzywej Beziera
- if (gbWybórFoguriLinii.Enabled)
- {
- // ustawienie stanu na brak aktywności dla kontenera gbWybórFoguriLinii
- gbWybórFoguriLinii.Enabled = false;
- // ustawienie stanu początkowego tworzonego opisu Krzywej Beziera
- Kardynalna.NumerPunktuKontrolnego2 = 0;
- Kardynalna.PromieńPunktuKontrolnego2 = 5;
- // przechowanie współrzędnych aktualnego położenia myszy
- Kardynalna.PunktP02 = e.Location;
- // wizualizacja punktu P0
- using (SolidBrush Pędzel = new SolidBrush(Color.Black))
- {
- // wykreślenie punktu P0
- Rysownica.FillEllipse(Pędzel,
- e.Location.X - Kardynalna.PromieńPunktuKontrolnego2,
- e.Location.Y - Kardynalna.PromieńPunktuKontrolnego2,
- 2 * Kardynalna.PromieńPunktuKontrolnego2,
- 2 * Kardynalna.PromieńPunktuKontrolnego2);
- // wykreślenie opisu Punktu Kontrolnego P0
- Rysownica.DrawString("P" + Kardynalna.NumerPunktuKontrolnego2.ToString(), FontOpisuPunktów, Pędzel, e.Location);
- } // tutaj nastąpi zwolnienie pędzla
- // Od if (WybórFiguriLinii.Eneabled)
- }
- else
- {
- // przechowanie współrzędnych kolejnych punktów
- // zwiększenie licznika punktów kontrolnych
- Kardynalna.NumerPunktuKontrolnego2++;
- // przechowanie wartości współrzędnych punktu kontrolnego o numerze w kardynalna.NumerPunktuKontrolnego2
- switch (Kardynalna.NumerPunktuKontrolnego2)
- {
- case 1: Kardynalna.PunktP12 = e.Location; break;
- case 2: Kardynalna.PunktP22 = e.Location; break;
- case 3: Kardynalna.PunktP32 = e.Location; break;
- }
- // sprawdzenie czy to jest ostatni punkt krzywej kardynalnej
- if (Kardynalna.NumerPunktuKontrolnego2 < 3)
- {
- // wykreślenie punktu kontrolnegokrzywej kardynalnej
- using (SolidBrush Pędzel = new SolidBrush(Color.Red))
- {
- Rysownica.FillEllipse(Pędzel,
- e.Location.X - Kardynalna.PromieńPunktuKontrolnego2,
- e.Location.Y - Kardynalna.PromieńPunktuKontrolnego2,
- 2 * Kardynalna.PromieńPunktuKontrolnego2,
- 2 * Kardynalna.PromieńPunktuKontrolnego2);
- // wykreślenie opisu punktu kontrolnego
- Rysownica.DrawString("P" + Kardynalna.NumerPunktuKontrolnego2.ToString(), FontOpisuPunktów, Pędzel, e.Location);
- }
- }
- else
- {
- // wykreślenie punktu końcowego krzywej kardynalnej
- // wykreślenie punktu kontrolnego krzywej kardynalnej
- using (SolidBrush Pędzel = new SolidBrush(Color.Red))
- {
- Rysownica.FillEllipse(Pędzel,
- e.Location.X - Kardynalna.PromieńPunktuKontrolnego2,
- e.Location.Y - Kardynalna.PromieńPunktuKontrolnego2,
- 2 * Kardynalna.PromieńPunktuKontrolnego2,
- 2 * Kardynalna.PromieńPunktuKontrolnego2);
- // wykreślenie opisu punktu kontrolnego
- Rysownica.DrawString("P" + Kardynalna.NumerPunktuKontrolnego2.ToString(), FontOpisuPunktów, Pędzel, e.Location);
- }
- x02 = Kardynalna.PunktP02.X;
- y02 = Kardynalna.PunktP02.Y;
- x12 = Kardynalna.PunktP12.X;
- y12 = Kardynalna.PunktP12.Y;
- x22 = Kardynalna.PunktP22.X;
- y22 = Kardynalna.PunktP22.Y;
- x32 = Kardynalna.PunktP32.X;
- y32 = Kardynalna.PunktP32.Y;
- Point PunktP02 = new Point(x02, y02);
- Point PunktP12 = new Point(x12, y12);
- Point PunktP22 = new Point(x22, y22);
- Point PunktP32 = new Point(x32, y32);
- Point[] punkty = { PunktP02, PunktP12, PunktP22, PunktP32 };
- // wykreślenie krzywej kardynalnej
- Rysownica.FillClosedCurve(Pędzel, punkty);
- //Rysownica.DrawCurve(Pióro, punkty);
- // ponowne uaktywnienie kontenera
- gbWybórFoguriLinii.Enabled = true;
- }
- }
- }
- if (rdbZamkniętaKrzywaKardynalna.Checked)
- {
- int x02;
- int y02;
- int x12;
- int y12;
- int x22;
- int y22;
- int x32;
- int y32;
- // sprawdzenie czy to jest pierwszy Punkt P0 Krzywej Beziera
- if (gbWybórFoguriLinii.Enabled)
- {
- // ustawienie stanu na brak aktywności dla kontenera gbWybórFoguriLinii
- gbWybórFoguriLinii.Enabled = false;
- // ustawienie stanu początkowego tworzonego opisu Krzywej Beziera
- Kardynalna.NumerPunktuKontrolnego2 = 0;
- Kardynalna.PromieńPunktuKontrolnego2 = 5;
- // przechowanie współrzędnych aktualnego położenia myszy
- Kardynalna.PunktP02 = e.Location;
- // wizualizacja punktu P0
- using (SolidBrush Pędzel = new SolidBrush(Color.Black))
- {
- // wykreślenie punktu P0
- Rysownica.FillEllipse(Pędzel,
- e.Location.X - Kardynalna.PromieńPunktuKontrolnego2,
- e.Location.Y - Kardynalna.PromieńPunktuKontrolnego2,
- 2 * Kardynalna.PromieńPunktuKontrolnego2,
- 2 * Kardynalna.PromieńPunktuKontrolnego2);
- // wykreślenie opisu Punktu Kontrolnego P0
- Rysownica.DrawString("P" + Kardynalna.NumerPunktuKontrolnego2.ToString(), FontOpisuPunktów, Pędzel, e.Location);
- } // tutaj nastąpi zwolnienie pędzla
- // Od if (WybórFiguriLinii.Eneabled)
- }
- else
- {
- // przechowanie współrzędnych kolejnych punktów
- // zwiększenie licznika punktów kontrolnych
- Kardynalna.NumerPunktuKontrolnego2++;
- // przechowanie wartości współrzędnych punktu kontrolnego o numerze w kardynalna.NumerPunktuKontrolnego2
- switch (Kardynalna.NumerPunktuKontrolnego2)
- {
- case 1: Kardynalna.PunktP12 = e.Location; break;
- case 2: Kardynalna.PunktP22 = e.Location; break;
- case 3: Kardynalna.PunktP32 = e.Location; break;
- }
- // sprawdzenie czy to jest ostatni punkt krzywej kardynalnej
- if (Kardynalna.NumerPunktuKontrolnego2 < 3)
- {
- // wykreślenie punktu kontrolnegokrzywej kardynalnej
- using (SolidBrush Pędzel = new SolidBrush(Color.Red))
- {
- Rysownica.FillEllipse(Pędzel,
- e.Location.X - Kardynalna.PromieńPunktuKontrolnego2,
- e.Location.Y - Kardynalna.PromieńPunktuKontrolnego2,
- 2 * Kardynalna.PromieńPunktuKontrolnego2,
- 2 * Kardynalna.PromieńPunktuKontrolnego2);
- // wykreślenie opisu punktu kontrolnego
- Rysownica.DrawString("P" + Kardynalna.NumerPunktuKontrolnego2.ToString(), FontOpisuPunktów, Pędzel, e.Location);
- }
- }
- else
- {
- // wykreślenie punktu końcowego krzywej kardynalnej
- // wykreślenie punktu kontrolnego krzywej kardynalnej
- using (SolidBrush Pędzel = new SolidBrush(Color.Red))
- {
- Rysownica.FillEllipse(Pędzel,
- e.Location.X - Kardynalna.PromieńPunktuKontrolnego2,
- e.Location.Y - Kardynalna.PromieńPunktuKontrolnego2,
- 2 * Kardynalna.PromieńPunktuKontrolnego2,
- 2 * Kardynalna.PromieńPunktuKontrolnego2);
- // wykreślenie opisu punktu kontrolnego
- Rysownica.DrawString("P" + Kardynalna.NumerPunktuKontrolnego2.ToString(), FontOpisuPunktów, Pędzel, e.Location);
- }
- x02 = Kardynalna.PunktP02.X;
- y02 = Kardynalna.PunktP02.Y;
- x12 = Kardynalna.PunktP12.X;
- y12 = Kardynalna.PunktP12.Y;
- x22 = Kardynalna.PunktP22.X;
- y22 = Kardynalna.PunktP22.Y;
- x32 = Kardynalna.PunktP32.X;
- y32 = Kardynalna.PunktP32.Y;
- Point PunktP02 = new Point(x02, y02);
- Point PunktP12 = new Point(x12, y12);
- Point PunktP22 = new Point(x22, y22);
- Point PunktP32 = new Point(x32, y32);
- Point[] punkty = { PunktP02, PunktP12, PunktP22, PunktP32 };
- // wykreślenie krzywej kardynalnej
- Rysownica.DrawClosedCurve(Pióro, punkty);
- //Rysownica.DrawCurve(Pióro, punkty);
- // ponowne uaktywnienie kontenera
- gbWybórFoguriLinii.Enabled = true;
- }
- }
- }
- if (rdbKrzywaKardynalna.Checked)
- {
- int x02;
- int y02;
- int x12;
- int y12;
- int x22;
- int y22;
- int x32;
- int y32;
- // sprawdzenie czy to jest pierwszy Punkt P0 Krzywej Beziera
- if (gbWybórFoguriLinii.Enabled)
- {
- // ustawienie stanu na brak aktywności dla kontenera gbWybórFoguriLinii
- gbWybórFoguriLinii.Enabled = false;
- // ustawienie stanu początkowego tworzonego opisu Krzywej Beziera
- Kardynalna.NumerPunktuKontrolnego2 = 0;
- Kardynalna.PromieńPunktuKontrolnego2 = 5;
- // przechowanie współrzędnych aktualnego położenia myszy
- Kardynalna.PunktP02 = e.Location;
- // wizualizacja punktu P0
- using (SolidBrush Pędzel = new SolidBrush(Color.Black))
- {
- // wykreślenie punktu P0
- Rysownica.FillEllipse(Pędzel,
- e.Location.X - Kardynalna.PromieńPunktuKontrolnego2,
- e.Location.Y - Kardynalna.PromieńPunktuKontrolnego2,
- 2 * Kardynalna.PromieńPunktuKontrolnego2,
- 2 * Kardynalna.PromieńPunktuKontrolnego2);
- // wykreślenie opisu Punktu Kontrolnego P0
- Rysownica.DrawString("P" + Kardynalna.NumerPunktuKontrolnego2.ToString(), FontOpisuPunktów, Pędzel, e.Location);
- } // tutaj nastąpi zwolnienie pędzla
- // Od if (WybórFiguriLinii.Eneabled)
- }
- else
- {
- // przechowanie współrzędnych kolejnych punktów
- // zwiększenie licznika punktów kontrolnych
- Kardynalna.NumerPunktuKontrolnego2++;
- // przechowanie wartości współrzędnych punktu kontrolnego o numerze w kardynalna.NumerPunktuKontrolnego2
- switch (Kardynalna.NumerPunktuKontrolnego2)
- {
- case 1: Kardynalna.PunktP12 = e.Location; break;
- case 2: Kardynalna.PunktP22 = e.Location; break;
- case 3: Kardynalna.PunktP32 = e.Location; break;
- }
- // sprawdzenie czy to jest ostatni punkt krzywej kardynalnej
- if (Kardynalna.NumerPunktuKontrolnego2 < 3)
- {
- // wykreślenie punktu kontrolnegokrzywej kardynalnej
- using (SolidBrush Pędzel = new SolidBrush(Color.Red))
- {
- Rysownica.FillEllipse(Pędzel,
- e.Location.X - Kardynalna.PromieńPunktuKontrolnego2,
- e.Location.Y - Kardynalna.PromieńPunktuKontrolnego2,
- 2 * Kardynalna.PromieńPunktuKontrolnego2,
- 2 * Kardynalna.PromieńPunktuKontrolnego2);
- // wykreślenie opisu punktu kontrolnego
- Rysownica.DrawString("P" + Kardynalna.NumerPunktuKontrolnego2.ToString(), FontOpisuPunktów, Pędzel, e.Location);
- }
- }
- else
- {
- // wykreślenie punktu końcowego krzywej kardynalnej
- // wykreślenie punktu kontrolnego krzywej kardynalnej
- using (SolidBrush Pędzel = new SolidBrush(Color.Red))
- {
- Rysownica.FillEllipse(Pędzel,
- e.Location.X - Kardynalna.PromieńPunktuKontrolnego2,
- e.Location.Y - Kardynalna.PromieńPunktuKontrolnego2,
- 2 * Kardynalna.PromieńPunktuKontrolnego2,
- 2 * Kardynalna.PromieńPunktuKontrolnego2);
- // wykreślenie opisu punktu kontrolnego
- Rysownica.DrawString("P" + Kardynalna.NumerPunktuKontrolnego2.ToString(), FontOpisuPunktów, Pędzel, e.Location);
- }
- x02 = Kardynalna.PunktP02.X;
- y02 = Kardynalna.PunktP02.Y;
- x12 = Kardynalna.PunktP12.X;
- y12 = Kardynalna.PunktP12.Y;
- x22 = Kardynalna.PunktP22.X;
- y22 = Kardynalna.PunktP22.Y;
- x32 = Kardynalna.PunktP32.X;
- y32 = Kardynalna.PunktP32.Y;
- Point PunktP02 = new Point(x02, y02);
- Point PunktP12 = new Point(x12, y12);
- Point PunktP22 = new Point(x22, y22);
- Point PunktP32 = new Point(x32, y32);
- Point[] punkty = { PunktP02, PunktP12, PunktP22, PunktP32 };
- // wykreślenie krzywej kardynalnej
- Rysownica.DrawCurve(Pióro, punkty);
- //Rysownica.DrawCurve(Pióro, punkty);
- // ponowne uaktywnienie kontenera
- gbWybórFoguriLinii.Enabled = true;
- }
- }
- }
- //
- if (rdbBezier.Checked)
- {
- // sprawdzenie czy to jest pierwszy Punkt P0 Krzywej Beziera
- if (gbWybórFoguriLinii.Enabled)
- {
- // ustawienie stanu na brak aktywności dla kontenera gbWybórFoguriLinii
- gbWybórFoguriLinii.Enabled = false;
- // ustawienie stanu początkowego tworzonego opisu Krzywej Beziera
- Bezier.NumerPunktuKontrolnego = 0;
- Bezier.PromieńPunktuKontrolnego = 5;
- // przechowanie współrzędnych aktualnego położenia myszy
- Bezier.PunktP0 = e.Location;
- // wizualizacja punktu P0
- using (SolidBrush Pędzel = new SolidBrush(Color.Black))
- {
- // wykreślenie punktu P0
- Rysownica.FillEllipse(Pędzel,
- e.Location.X - Bezier.PromieńPunktuKontrolnego,
- e.Location.Y - Bezier.PromieńPunktuKontrolnego,
- 2 * Bezier.PromieńPunktuKontrolnego,
- 2 * Bezier.PromieńPunktuKontrolnego);
- // wykreślenie opisu Punktu Kontrolnego P0
- Rysownica.DrawString("P" + Bezier.NumerPunktuKontrolnego.ToString(), FontOpisuPunktów, Pędzel, e.Location);
- } // tutaj nastąpi zwolnienie pędzla
- // Od if (WybórFiguriLinii.Eneabled)
- }
- else
- {
- // przechowanie współrzędnych kolejnych punktów
- // zwiększenie licznika punktów kontrolnych
- Bezier.NumerPunktuKontrolnego++;
- // przechowanie wartości współrzędnych punktu kontrolnego o numerze w Bezier.NUmerPunktuKontrolnego
- switch (Bezier.NumerPunktuKontrolnego)
- {
- case 1: Bezier.PunktP1 = e.Location; break;
- case 2: Bezier.PunktP2 = e.Location; break;
- case 3: Bezier.PunktP3 = e.Location; break;
- }
- // sprawdzenie czy to jest ostatni punkt krzywej beziera
- if (Bezier.NumerPunktuKontrolnego < 3)
- {
- // wykreślenie punktu kontrolnegokrzywej beziera
- using (SolidBrush Pędzel = new SolidBrush(Color.Red))
- {
- Rysownica.FillEllipse(Pędzel,
- e.Location.X - Bezier.PromieńPunktuKontrolnego,
- e.Location.Y - Bezier.PromieńPunktuKontrolnego,
- 2 * Bezier.PromieńPunktuKontrolnego,
- 2 * Bezier.PromieńPunktuKontrolnego);
- // wykreślenie opisu punktu kontrolnego
- Rysownica.DrawString("P" + Bezier.NumerPunktuKontrolnego.ToString(), FontOpisuPunktów, Pędzel, e.Location);
- }
- }
- else
- {
- // wykreślenie punktu końcowego krzywej beziera
- // wykreślenie punktu kontrolnegokrzywej beziera
- using (SolidBrush Pędzel = new SolidBrush(Color.Red))
- {
- Rysownica.FillEllipse(Pędzel,
- e.Location.X - Bezier.PromieńPunktuKontrolnego,
- e.Location.Y - Bezier.PromieńPunktuKontrolnego,
- 2 * Bezier.PromieńPunktuKontrolnego,
- 2 * Bezier.PromieńPunktuKontrolnego);
- // wykreślenie opisu punktu kontrolnego
- Rysownica.DrawString("P" + Bezier.NumerPunktuKontrolnego.ToString(), FontOpisuPunktów, Pędzel, e.Location);
- }
- // wykreślenie krzywej beziera
- Rysownica.DrawBezier(Pióro, Bezier.PunktP0, Bezier.PunktP1, Bezier.PunktP2, Bezier.PunktP3);
- // ponowne uaktywnienie kontenera
- gbWybórFoguriLinii.Enabled = true;
- }
- }
- }
- }
- }
- private void rdbBezier_CheckedChanged(object sender, EventArgs e)
- {
- if (rdbBezier.Checked)
- {// wizualizacja okna dialogowego z info dla użytkownika co powinien zrobić
- MessageBox.Show("Wykreślenie Krzywej Beziera wymaga zaznaczenia kliknięciem 4 punktów na Rysownicy", "Kreślenie Krzywej Beziera", MessageBoxButtons.OK, MessageBoxIcon.Information);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement