예제 #1
0
        /// <summary>
        /// Создание Фигуры
        /// </summary>
        /// <returns></returns>
        public Path MakeFigure()
        {
            //TODO

            //Реализовать рисовалку
            Tochka LeftTop     = this.LeftTop3D.To2D;
            Tochka LeftBottom  = this.LeftBot3D.To2D;
            Tochka RightBottom = this.RightBot3D.To2D;
            Tochka RightTop    = this.RightTop3D.To2D;
            //Создаем коллекцию для хранения геометрии
            PathGeometry myPathG = new PathGeometry();
            Path         mypath  = new Path();

            mypath.Stroke          = Brushes.White;
            mypath.StrokeThickness = 1;
            //Рисуем две опорные линии
            myPathG.AddGeometry(DrowLine(LeftTop, RightTop));
            myPathG.AddGeometry(DrowLine(LeftBottom, RightBottom));
            //Создаем списки точек на линиях
            List <Tochka> top = Grid(LeftTop, RightTop, 20);
            List <Tochka> bot = Grid(RightBottom, LeftBottom, 20);

            //Рисуем опорные линии
            for (int i = 0; i < top.Count; i++)
            {
                myPathG.AddGeometry(DrowLine(top[i], bot[i]));
            }

            mypath.Data = myPathG;
            return(mypath);
        }
예제 #2
0
        /// <summary>
        /// Создает список точек между начальной точкой и конечной включительно на равном расстоянии друг от друга в заданном количестве
        /// </summary>
        /// <param name="start">Начальная точка</param>
        /// <param name="finish">Конечная точка</param>
        /// <param name="count">Кол-во точек между начальной и конечной</param>
        /// <returns></returns>
        private List <Tochka> Grid(Tochka start, Tochka finish, int count)
        {
            List <Tochka> result = new List <Tochka>();

            //Добавляем начальную точку
            result.Add(start);

            //Создаем вектор из старта в финиш
            Tochka vector = finish - start;

            //Нормируем, теперь длина равна 1
            if (vector.Length != 0)
            {
                vector = vector / (vector.Length);
            }

            //Делаем длину вектора такой, чтоб он отложился между стартом и финишем Count+1 раз
            vector = vector * ((finish - start).Length) / (count + 1);

            //Формируем список точек между стартом и финишем на одинаковом расстоянии
            for (int i = 1; i < count + 1; i++)
            {
                result.Add(result[i - 1] + vector);
            }

            //Добавляем конечную точку в список
            result.Add(finish);

            return(result);
        }
예제 #3
0
        /// <summary>
        /// Рисуем линию
        /// </summary>
        /// <returns></returns>
        public LineGeometry DrowLine(Tochka p1, Tochka p2)
        {
            LineGeometry myLine = new LineGeometry();

            myLine.StartPoint = new System.Windows.Point(p1.X, 500 - p1.Y);
            myLine.EndPoint   = new System.Windows.Point(p2.X, 500 - p2.Y);
            return(myLine);
        }