Example #1
0
        public VEllipse(float thickness, Color thicknessColor, Color Сolor, Point[] Points)
        {
            this.thickness      = thickness;                                                 //Толщина линии
            this.thicknessColor = thicknessColor;                                            //Цвет линии
            this.color          = Сolor;                                                     //Цвет заливки
            PointsIDs           = new int[9];                                                //У эллипса будет храниться 4 точки + 4 точки выделения + центр
            for (int i = 0; i < PointsIDs.Length - 4; i++)                                   //Перебираем список точек, -4 т.к. мы точки эллипса будем высчитывать сами
            {
                MyPoint mypoint = new MyPoint(Points[i].X, Points[i].Y, Vector.IDS++, this); //Конвертируем Point в мою структуру MyPoint
                Vector.AddP(mypoint);                                                        //Добавляем точку в общий список
                PointsIDs[i + 4] = mypoint.ID;                                               //Записываем ID точки в массив точек, записываются точки выделения и точка центра
            }
            //Вычисляем точки самого эллипса
            //Верхние точки прямоугольника выделителя
            MyPoint point = new MyPoint((Points[0].X + Points[3].X) / 2, (Points[0].Y + Points[3].Y) / 2, Vector.IDS++, this); //Конвертируем Point в мою структуру MyPoint

            Vector.AddP(point);                                                                                                //Добавляем точку в общий список
            PointsIDs[0] = point.ID;                                                                                           //Записываем ID точки в массив точек
            //Правые точки прямоугольника выделителя
            point = new MyPoint((Points[3].X + Points[1].X) / 2, (Points[3].Y + Points[1].Y) / 2, Vector.IDS++, this);         //Конвертируем Point в мою структуру MyPoint
            Vector.AddP(point);                                                                                                //Добавляем точку в общий список
            PointsIDs[1] = point.ID;                                                                                           //Записываем ID точки в массив точек
            //Нижние точки прямоугольника выделителя
            point = new MyPoint((Points[1].X + Points[2].X) / 2, (Points[1].Y + Points[2].Y) / 2, Vector.IDS++, this);         //Конвертируем Point в мою структуру MyPoint
            Vector.AddP(point);                                                                                                //Добавляем точку в общий список
            PointsIDs[2] = point.ID;                                                                                           //Записываем ID точки в массив точек
            //Левые точки прямоугольника выделителя
            point = new MyPoint((Points[2].X + Points[0].X) / 2, (Points[2].Y + Points[0].Y) / 2, Vector.IDS++, this);         //Конвертируем Point в мою структуру MyPoint
            Vector.AddP(point);                                                                                                //Добавляем точку в общий список
            PointsIDs[3] = point.ID;                                                                                           //Записываем ID точки в массив точек
        }
Example #2
0
 //Конструктор линии, передаем толщину, цвет и список точек, составляющие данную ограниченную линию
 public Line(float thickness, Color color, Point[] Points)
 {
     this.thickness      = thickness;                                                 //Толщина линии
     this.thicknessColor = color;                                                     //Цвет линии
     PointsIDs           = new int[3];                                                //Мы храним 3 точки, первую, центр и последнюю
     for (int i = 0; i < PointsIDs.Length; i++)                                       //Перебираем список точек
     {
         MyPoint mypoint = new MyPoint(Points[i].X, Points[i].Y, Vector.IDS++, this); //Конвертируем Point в мою структуру MyPoint
         Vector.AddP(mypoint);                                                        //Добавляем точку в общий список
         PointsIDs[i] = mypoint.ID;                                                   //Записываем ID точки в массив точек линии
     }
 }
Example #3
0
 public VRectangle(float thickness, Color thicknessColor, Color Сolor, Point[] Points)
 {
     this.thickness      = thickness;                                                 //Толщина линии
     this.thicknessColor = thicknessColor;                                            //Цвет линии
     this.color          = Сolor;                                                     //Цвет заливки
     PointsIDs           = new int[5];                                                //У прямоугольника(квадрата) будет храниться 4 точки + центр
     for (int i = 0; i < PointsIDs.Length; i++)                                       //Перебираем список точек
     {
         MyPoint mypoint = new MyPoint(Points[i].X, Points[i].Y, Vector.IDS++, this); //Конвертируем Point в мою структуру MyPoint
         Vector.AddP(mypoint);                                                        //Добавляем точку в общий список
         PointsIDs[i] = mypoint.ID;                                                   //Записываем ID точки в массив точек
     }
 }
Example #4
0
        public VTriangle(float thickness, Color thicknessColor, Color Сolor, Point[] Points)
        {
            this.thickness      = thickness;      //Толщина линии
            this.thicknessColor = thicknessColor; //Цвет линии
            this.color          = Сolor;          //Цвет заливки
            PointsIDs           = new int[8];     //У треугольника будет храниться 3 точки + центр и точки выделения

            Point max = Points[0], min = Points[0];

            for (int i = 0; i < PointsIDs.Length - 5; i++) //Перебираем список точек, от 0 до 3, т.к. центр и точки выделения нужно вычислить
            {
                //Ищем максимальную позицию и минимальную
                if (Points[i].X < min.X)
                {
                    min.X = Points[i].X;                      //Если у данной точки X меньше, назначаем в переменную
                }
                if (Points[i].Y < min.Y)
                {
                    min.Y = Points[i].Y;                      //Если у данной точки Y меньше, назначаем в переменную
                }
                if (Points[i].X > max.X)
                {
                    max.X = Points[i].X;                      //Если у данной точки X больше, назначаем в переменную
                }
                if (Points[i].Y > max.Y)
                {
                    max.Y = Points[i].Y;                                                     //Если у данной точки Y больше, назначаем в переменную
                }
                MyPoint mypoint = new MyPoint(Points[i].X, Points[i].Y, Vector.IDS++, this); //Конвертируем Point в мою структуру MyPoint
                Vector.AddP(mypoint);                                                        //Добавляем точку в общий список
                PointsIDs[i] = mypoint.ID;                                                   //Записываем ID точки в массив точек
            }

            //Первая точка выделения
            MyPoint select1 = new MyPoint(min.X, min.Y, Vector.IDS++, this); //Конвертируем Point в мою структуру MyPoint

            Vector.AddP(select1);                                            //Добавляем точку в общий список
            PointsIDs[PointsIDs.Length - 5] = select1.ID;                    //Записываем ID

            //Вторая точка выделения
            MyPoint select2 = new MyPoint(max.X, max.Y, Vector.IDS++, this); //Конвертируем Point в мою структуру MyPoint

            Vector.AddP(select2);                                            //Добавляем точку в общий список
            PointsIDs[PointsIDs.Length - 4] = select2.ID;                    //Записываем ID

            //Третья точка выделения
            MyPoint select3 = new MyPoint(min.X, max.Y, Vector.IDS++, this); //Конвертируем Point в мою структуру MyPoint

            Vector.AddP(select3);                                            //Добавляем точку в общий список
            PointsIDs[PointsIDs.Length - 3] = select3.ID;                    //Записываем ID

            //Четвертая точка выделения
            MyPoint select4 = new MyPoint(max.X, min.Y, Vector.IDS++, this); //Конвертируем Point в мою структуру MyPoint

            Vector.AddP(select4);                                            //Добавляем точку в общий список
            PointsIDs[PointsIDs.Length - 2] = select4.ID;                    //Записываем ID

            //Центр
            MyPoint center = new MyPoint(((min.X + max.X) / 2), ((min.Y + max.Y) / 2), Vector.IDS++, this); //Конвертируем Point в мою структуру MyPoint

            Vector.AddP(center);                                                                            //Добавляем точку в общий список
            PointsIDs[PointsIDs.Length - 1] = center.ID;                                                    //Записываем ID центра последним в массив
        }