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); }
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); }
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(); }
void UpdateEllipse(MyEllipse ellipse) { SolidColorBrush border = CreateColor(cbBorder); SolidColorBrush Fill = CreateColor(cbFill); int borderTh = Int32.Parse(tbBorderTh.Text); ellipse.UpdateShape(Fill, border, borderTh); }
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 { } } }
//画椭圆 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(); }
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); } }
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(); }