Exemplo n.º 1
0
        private object getEllipse(object sender, MouseEventArgs e)
        {
            _end = e.GetPosition(MyBoard);
            Ellipse ellip = new Ellipse()
            {
                Stroke = DrawTools.colorStroke,
                //IsEnabled = true,
                StrokeThickness = DrawTools.thicknessVal,
                //Fill = DrawTools.colorStroke,
                //Width = Math.Abs(_end.X - _start.X),
                //Height = Math.Abs(_end.Y - _start.Y)
                Width  = 2,
                Height = 2
            };

            ellip.SetValue(LeftProperty, _start.X);
            ellip.SetValue(TopProperty, _start.Y);
            MyBoard.Children.Add(ellip);
            Canvas.SetLeft(ellip, Math.Min(_start.X, _end.X));
            Canvas.SetTop(ellip, Math.Min(_start.Y, _end.Y));

            MyEllipse newEllip = new MyEllipse(ellip);

            MyBoardObjects.Add(newEllip);

            return(ellip);
        }
Exemplo n.º 2
0
        private List <MyShape> parseStringDataToListShapeObject(string data)
        {
            List <MyShape> myShapes  = new List <MyShape>();
            string         firstWord = null;

            string[] listShape = data.Split('\n');
            for (int i = 0; i < listShape.Length; i++)
            {
                if (listShape[i] != "")
                {
                    firstWord = listShape[i].Substring(0, listShape[i].IndexOf(" "));
                }
                switch (firstWord)
                {
                case "Line":
                    MyShape myLine = new MyLine();
                    myLine.Open(listShape[i]);
                    myShapes.Add(myLine);
                    break;

                case "Rectangle":
                    MyShape myRectangle = new MyRectangle();
                    myRectangle.Open(listShape[i]);
                    myShapes.Add(myRectangle);
                    break;

                case "Circle":
                    MyShape myCircle = new MyCircle();
                    myCircle.Open(listShape[i]);
                    myShapes.Add(myCircle);
                    break;

                case "Ellipse":
                    MyShape myEllipse = new MyEllipse();
                    myEllipse.Open(listShape[i]);
                    myShapes.Add(myEllipse);
                    break;

                case "Polygon":
                    MyShape myPolygon = new MyPolygon();
                    myPolygon.Open(listShape[i]);
                    myShapes.Add(myPolygon);
                    break;

                case "Bezier":
                    MyShape myBezier = new MyBezier();
                    myBezier.Open(listShape[i]);
                    myShapes.Add(myBezier);
                    break;

                case "Polyline":
                    MyShape myPolyline = new MyPolyline();
                    myPolyline.Open(listShape[i]);
                    myShapes.Add(myPolyline);
                    break;
                }
                firstWord = "";
            }
            return(myShapes);
        }
Exemplo n.º 3
0
        public static MyCylinder CreateMyCylinderFromFace(Surface faceSurface, Face2 face)
        {
            //OSSERVAZIONE: CI POTREBBERO ESSERE EDGE CHIUSI CHE NON AVERE CENTRO SULL'ASSE
            //AD ESEMPIO EDGE CHIUSI CHE SI CREANO INTERSECANDO UN CILINDRO CON UNA SFERA
            //"INFILATA" SULLA SUA SUPERFICIE LATERALE.
            //DI QUESTI EDGE CHIUSI NON ME NE PREOCCUPO PERCHE' SONO A CONTATTO CON ALTRE FORME
            //DI CUI SPERO DI AVER CONTROLLATO (NEL CONTROLLO DELLA GEOMETRIA) IL GIUSTO
            //POSIZIONAMENTO.


            double[] myCylinderParameters = faceSurface.CylinderParams;
            double[] myCylinderOrigin     =
            {
                (double)myCylinderParameters.GetValue(0), (double)myCylinderParameters.GetValue(1),
                (double)myCylinderParameters.GetValue(2)
            };
            double[] myCylinderAxis =
            {
                (double)myCylinderParameters.GetValue(3), (double)myCylinderParameters.GetValue(4),
                (double)myCylinderParameters.GetValue(5)
            };
            double myCylinderRadius = (double)myCylinderParameters.GetValue(6);

            var newMyCylinder = new MyCylinder(myCylinderOrigin, myCylinderAxis, myCylinderRadius);

            var faceEdges  = (Array)face.GetEdges();
            var numOfEdges = faceEdges.Length;

            int i = 0;
            var currentListOfBaseCircle  = new List <MyCircle>();
            var currentListOfBaseEllipse = new List <MyEllipse>();

            while (i < numOfEdges)
            {
                Edge  edge      = (Edge)faceEdges.GetValue(i);
                Curve curveEdge = edge.GetCurve();
                if (IsClosedEdge(edge))
                {
                    //is the closed edge a circle?
                    if (curveEdge.IsCircle())
                    {
                        double[] circleParam   = curveEdge.CircleParams;
                        var      newBaseCircle = new MyCircle(circleParam);
                        currentListOfBaseCircle.Add(newBaseCircle);
                    }
                    //is the closed edge an ellipse?
                    if (curveEdge.IsEllipse())
                    {
                        double[] ellipseParam   = curveEdge.GetEllipseParams();
                        var      newBaseEllipse = new MyEllipse(ellipseParam);
                        currentListOfBaseEllipse.Add(newBaseEllipse);
                    }
                }
                i++;
            }
            newMyCylinder.listOfBaseCircle  = currentListOfBaseCircle;
            newMyCylinder.listOfBaseEllipse = currentListOfBaseEllipse;
            return(newMyCylinder);
        }
 private void Form1_MouseDown(object sender, MouseEventArgs e)
 {
     currentlyDrawing = new MyEllipse()
     {
         X1 = e.X, Y1 = e.Y, X2 = e.X, Y2 = e.Y
     };
     Invalidate();
 }
Exemplo n.º 5
0
        void UpdateEllipse(MyEllipse ellipse)
        {
            SolidColorBrush border   = CreateColor(cbBorder);
            SolidColorBrush Fill     = CreateColor(cbFill);
            int             borderTh = Int32.Parse(tbBorderTh.Text);

            ellipse.UpdateShape(Fill, border, borderTh);
        }
Exemplo n.º 6
0
        private void _forward()
        {
            List <object> lastObj;

            if (deletedObjects.Count == 0)
            {
                return;
            }
            lastObj = deletedObjects.Pop();
            foreach (object obj in lastObj)
            {
                if (obj is MySketch)
                {
                    MySketch        mySketch = obj as MySketch;
                    PointCollection points   = mySketch.pointsSet;
                    try
                    {
                        addLines(points);
                        MyBoardObjects.Add(mySketch);
                    }
                    catch (Exception) { }
                }
                else if (obj is MyRectangle)
                {
                    MyRectangle myrect = obj as MyRectangle;
                    try
                    {
                        MyBoard.Children.Add(myrect.rect);
                        MyBoardObjects.Add(myrect);
                    }
                    catch (Exception) { }
                }
                else if (obj is MyLine)
                {
                    MyLine myline = obj as MyLine;
                    try
                    {
                        MyBoard.Children.Add(myline._line);
                        MyBoardObjects.Add(myline);
                    }
                    catch (Exception) { }
                }
                else if (obj is MyEllipse)
                {
                    MyEllipse myelli = obj as MyEllipse;
                    try
                    {
                        MyBoard.Children.Add(myelli.ellipse);
                        MyBoardObjects.Add(myelli);
                    }
                    catch (Exception) { }
                }
                else
                {
                }
            }
        }
Exemplo n.º 7
0
        //画椭圆
        private void AddEllipse(Point pt1, Point pt2)
        {
            MyEllipse mr = new MyEllipse();

            mr.Width    = Math.Abs(pt1.X - pt2.X);
            mr.Height   = Math.Abs(pt1.Y - pt2.Y);
            mr.drawmode = new GeometryMode(brush, pen);
            compositeGraphic.Add(mr, Math.Min(pt1.X, pt2.X), Math.Min(pt1.Y, pt2.Y));
            du_refresh();
            canvas1.ReleaseMouseCapture();
        }
Exemplo n.º 8
0
        private void print_Click(object sender, RoutedEventArgs e)
        {
            ShapePoint[] shapePoints = new ShapePoint[20];
            for (int i = 0; i < 20; i++)
            {
                switch (r() % 5)
                {
                case 0:
                    ShapePoint point = new MyPoint(r(), r());
                    shapePoints[i] = point;
                    break;

                case 1:
                    ShapePoint Line = new MyLine(r(), r(), r(), r());
                    shapePoints[i] = Line;
                    break;

                case 2:
                    ShapePoint quadrangle = new MyQuadrangle(r(), r(), r(), r());
                    shapePoints[i] = (quadrangle);
                    break;

                case 3:
                    ShapePoint circle = new MyСircle(r(), r(), r(), r());
                    shapePoints[i] = (circle);
                    break;

                case 4:
                    ShapePoint ellipse = new MyEllipse(r(), r(), r(), r(), r(), r());
                    shapePoints[i] = (ellipse);
                    break;

                default:
                    ShapePoint ee = new MyQuadrangle(r(), r(), r(), r());
                    shapePoints[i] = (ee);
                    break;
                }
            }
            for (int i = 0; i < 20; i++)
            {
                shapePoints[i].drow(grid1);
            }
        }
Exemplo n.º 9
0
        public static MyCylinder KLCreateMyCylinderFromFace(Surface faceSurface, Face2 face, double[,] transformationMatrix)
        {
            //OSSERVAZIONE: CI POTREBBERO ESSERE EDGE CHIUSI CHE NON AVERE CENTRO SULL'ASSE
            //AD ESEMPIO EDGE CHIUSI CHE SI CREANO INTERSECANDO UN CILINDRO CON UNA SFERA
            //"INFILATA" SULLA SUA SUPERFICIE LATERALE.
            //DI QUESTI EDGE CHIUSI NON ME NE PREOCCUPO PERCHE' SONO A CONTATTO CON ALTRE FORME
            //DI CUI SPERO DI AVER CONTROLLATO (NEL CONTROLLO DELLA GEOMETRIA) IL GIUSTO
            //POSIZIONAMENTO.

            //KLdebug.Print("FACCIA CILINDRICA", "buildRepeatedEntity.txt");
            //KLdebug.Print(" ", "buildRepeatedEntity.txt");

            double[] myCylinderParameters = faceSurface.CylinderParams;
            double[] myCylinderOrigin     =
            {
                (double)myCylinderParameters.GetValue(0), (double)myCylinderParameters.GetValue(1),
                (double)myCylinderParameters.GetValue(2)
            };
            double[] myCylinderAxis =
            {
                (double)myCylinderParameters.GetValue(3), (double)myCylinderParameters.GetValue(4),
                (double)myCylinderParameters.GetValue(5)
            };
            double myCylinderRadius = (double)myCylinderParameters.GetValue(6);

            if (transformationMatrix != null)
            {
                double[] myCylinderOriginAffine = { (double)myCylinderOrigin.GetValue(0), (double)myCylinderOrigin.GetValue(1), (double)myCylinderOrigin.GetValue(2), 1 };
                double[] myCylinderAxisAffine   = { (double)myCylinderAxis.GetValue(0), (double)myCylinderAxis.GetValue(1), (double)myCylinderAxis.GetValue(2), 1 };

                var newMyCylinderOrigin = Matrix.Multiply(transformationMatrix, myCylinderOriginAffine);
                var newMyCylinderAxis   = Matrix.Multiply(transformationMatrix, myCylinderAxisAffine);

                myCylinderOrigin.SetValue((double)newMyCylinderOrigin.GetValue(0), 0);
                myCylinderOrigin.SetValue((double)newMyCylinderOrigin.GetValue(1), 1);
                myCylinderOrigin.SetValue((double)newMyCylinderOrigin.GetValue(2), 2);

                //myCylinderAxis.SetValue((double)newMyCylinderAxis.GetValue(0), 0);
                //myCylinderAxis.SetValue((double)newMyCylinderAxis.GetValue(1), 1);
                //myCylinderAxis.SetValue((double)newMyCylinderAxis.GetValue(2), 2);
            }

            var newMyCylinder = new MyCylinder(myCylinderOrigin, myCylinderAxis, myCylinderRadius);

            var faceEdges  = (Array)face.GetEdges();
            var numOfEdges = faceEdges.Length;

            int i = 0;
            var currentListOfBaseCircle  = new List <MyCircle>();
            var currentListOfBaseEllipse = new List <MyEllipse>();

            while (i < numOfEdges)
            {
                Edge  edge      = (Edge)faceEdges.GetValue(i);
                Curve curveEdge = edge.GetCurve();
                if (IsClosedEdge(edge))
                {
                    //KLdebug.Print("trovato edge chiuso:", "buildRepeatedEntity.txt");


                    //is the closed edge a circle?
                    if (curveEdge.IsCircle())
                    {
                        double[] circleParam = curveEdge.CircleParams;
                        if (transformationMatrix != null)
                        {
                            double[] circleCenterAffine = { (double)circleParam.GetValue(0), (double)circleParam.GetValue(1), (double)circleParam.GetValue(2), 1 };

                            var newMyCircleOrigin = Matrix.Multiply(transformationMatrix, circleCenterAffine);

                            circleParam.SetValue((double)newMyCircleOrigin.GetValue(0), 0);
                            circleParam.SetValue((double)newMyCircleOrigin.GetValue(1), 1);
                            circleParam.SetValue((double)newMyCircleOrigin.GetValue(2), 2);
                        }
                        var newBaseCircle = new MyCircle(circleParam);
                        currentListOfBaseCircle.Add(newBaseCircle);
                    }
                    //is the closed edge an ellipse?
                    if (curveEdge.IsEllipse())
                    {
                        double[] ellipseParam = curveEdge.GetEllipseParams();

                        if (transformationMatrix != null)
                        {
                            double[] circleCenterAffine = { (double)ellipseParam.GetValue(0), (double)ellipseParam.GetValue(1), (double)ellipseParam.GetValue(2), 1 };

                            var newMyCircleOrigin = Matrix.Multiply(transformationMatrix, circleCenterAffine);

                            ellipseParam.SetValue((double)newMyCircleOrigin.GetValue(0), 0);
                            ellipseParam.SetValue((double)newMyCircleOrigin.GetValue(1), 1);
                            ellipseParam.SetValue((double)newMyCircleOrigin.GetValue(2), 2);
                        }

                        var newBaseEllipse = new MyEllipse(ellipseParam);
                        currentListOfBaseEllipse.Add(newBaseEllipse);
                    }
                }
                i++;
            }
            newMyCylinder.listOfBaseCircle  = currentListOfBaseCircle;
            newMyCylinder.listOfBaseEllipse = currentListOfBaseEllipse;
            return(newMyCylinder);
        }
 private void Form1_MouseUp(object sender, MouseEventArgs e)
 {
     shapes.Add(currentlyDrawing);
     currentlyDrawing = null;
     Invalidate();
 }