Example #1
0
        internal void AddSegment(cSegment xSegment, int xNumber)
        {
            //funkcja dodająca nowy segment do listy
            //xSegment - wybrany segment
            //xNumber - numer segmentu

            mSegments.Insert(xNumber, xSegment);
        }
        public void DrawPolygon(cPolygon xPolygon, PaintEventArgs e)
        {
            //funkcja rysująca dowolny wielobok
            //xPolygon - baza punktów

            Pen pBluePen;                                   //kolor mazaka

            PointF[] pPointsLine;                           //punkty tworzące linie
            int      pCount;                                //liczba boków figury
            int      pIndexNext;                            //następny index segmentu
            int      pIndex;

            pBluePen    = new Pen(Color.Blue, 3);
            pPointsLine = new PointF[2];
            pCount      = xPolygon.Segments.Count;

            //pętla rysująca linię składającą się z dwóch punktów
            for (pIndex = 0; pIndex <= (pCount - 1); pIndex++)
            {
                pIndexNext = pIndex + 1;

                if (pIndex == (pCount - 1))                      //następcą ostatniego punktu jest punkt początkowy
                {
                    pIndexNext = 0;
                }

                cSegment pSegment      = xPolygon.GetSegmentByNumer(pIndex);
                cSegment pSegment_Next = xPolygon.GetSegmentByNumer(pIndexNext);
                //wrzucić do xPolygon^^


                if (!pSegment.IsCurve)                  //sprawdzenie lini: prosta, czy krzywa
                {
                    pPointsLine[0] = new PointF(pSegment.Point.X,
                                                pSegment.Point.Y);
                    pPointsLine[1] = new PointF(pSegment_Next.Point.X,
                                                pSegment_Next.Point.Y);
                    e.Graphics.DrawPolygon(pBluePen, pPointsLine);
                }
                else
                {
                    // DrawBezierCurve(pSegment, pSegment_Next, e);
                    //[MO 10.03.2020] funkcja chwilowo wyłączona do poprawnej kompilacji
                }
            }
        }
        public static cSegment GetSegment(int xOffsetX, int xOffsetY, cPoint xPoint, int xNumber)
        {
            //funkcja zwracająca segment
            //xOffsetX - przesunięcie względem osi X
            //xOffsetY - przesunięcie względem osi Y
            //xPoint - współrzędne punktu bazowego
            //xNumber - numer segmentu

            cPoint   pPoint;
            PointF   pPointHelper;
            cSegment pSegment;

            pPointHelper = new PointF(xPoint.X + xOffsetX, xPoint.Y + xOffsetY);
            pPoint       = new cPoint(pPointHelper);
            pSegment     = new cSegment(pPoint, xNumber);

            return(pSegment);
        }