public void DrawEllipseROI(double row = 100, double col = 100, double phi = 10, double radius1 = 100, double radius2 = 100) { if (bDrawing) { MessageHelper.ShowWarning("显示界面正在进行ROI操作!"); return; } if (Image == null) { return; } if (ellipse == null) { ellipse = new DrawEllipse(Window, Image, row, col, phi, radius1, radius2); } else { ellipse.Row = row; ellipse.Col = col; ellipse.Angle = phi; ellipse.Radius1 = radius1; ellipse.Radius2 = radius2; } bDrawing = true; DrawingShape = ROIShape.Ellipse; BindingEllipseROIEvent(); ellipse.CreateROI(); }
void Start() { Instantiate(arrow, Vector3.zero, Quaternion.Euler(new Vector3(0, 0, longitudeOfTheAscendingNode))); Instantiate(arrow, Vector3.zero, Quaternion.Euler(new Vector3(0, 0, longitudeOfTheAscendingNode + argumentOfPeriapsis))); semiminorAxis = semimajorAxis * Mathf.Sqrt(1 - Mathf.Pow(eccentricity, 2)); focalParam = Mathf.Pow(semiminorAxis, 2) / semimajorAxis; //positions with angle 0 float xPosition = -(semimajorAxis * eccentricity); float yPosition = 0; float rotation = longitudeOfTheAscendingNode + argumentOfPeriapsis; GameObject orbitLineInstance = Instantiate(orbitLine, new Vector3(xPosition * Mathf.Cos(rotation * Mathf.Deg2Rad) - yPosition * Mathf.Sin(rotation * Mathf.Deg2Rad), yPosition * Mathf.Cos(rotation * Mathf.Deg2Rad) + xPosition * Mathf.Sin(rotation * Mathf.Deg2Rad), 0), Quaternion.identity); DrawEllipse drawEllipse = orbitLineInstance.GetComponent <DrawEllipse>(); drawEllipse.xradius = semimajorAxis; drawEllipse.yradius = semiminorAxis; orbitLineInstance.transform.rotation = Quaternion.Euler(new Vector3(0, 0, longitudeOfTheAscendingNode + argumentOfPeriapsis)); drawEllipse.Draw(); linearSpeed = Mathf.PI * semimajorAxis * semiminorAxis / 1000; angle = 0; }
public IDrawObj CreateDrawObj(DrawType type) { //todo add control IDrawObj obj; switch (type) { case DrawType.Group: obj = new DrawGroup(); break; case DrawType.Combine: obj = new DrawCombine(); break; case DrawType.Rect: obj = new DrawRect(); break; case DrawType.Ellipse: obj = new DrawEllipse(); break; case DrawType.Text: obj = new DrawText(); break; case DrawType.StraightLine: obj = new DrawStraightLine(); break; case DrawType.FoldLine: obj = new DrawFoldLine(); break; case DrawType.Bezier: obj = new DrawBezier(); break; case DrawType.Polygon: obj = new DrawPolygon(); break; case DrawType.ClosedBezier: obj = new DrawClosedBezier(); break; default: return(null); } return(obj); }
void Start() { semiMinorAxis = semiMayorAxis * Mathf.Sqrt(1 - Mathf.Pow(excentricity, 2)); focalParam = Mathf.Pow(semiMinorAxis, 2) / semiMayorAxis; GameObject orbitLineInstance = Instantiate(orbitLine, Vector3.zero, Quaternion.identity); DrawEllipse drawEllipse = orbitLineInstance.GetComponent <DrawEllipse>(); drawEllipse.xradius = semiMayorAxis; drawEllipse.yradius = semiMinorAxis; orbitLineInstance.transform.rotation = Quaternion.Euler(new Vector3(0, 0, newAngle)); drawEllipse.Draw(); angle = 0; }
public void LoadData(DrawEllipse obj, Form frm) { objEllips = obj; txtName.Text = objEllips.Name; txtX1.Text = objEllips.Rectangle.X.ToString(); txtY1.Text = objEllips.Rectangle.Y.ToString(); txtX2.Text = objEllips.Rectangle.Width.ToString(); txtY2.Text = objEllips.Rectangle.Height.ToString(); txtWidth.Text = objEllips.LineWidth.ToString(); lblColor.BackColor = objEllips.Color; chkFill.Checked = objEllips.Fill; lblFillColor.BackColor = objEllips.FillColor; txtAngle.Text = objEllips.RotateAngle.ToString("F6"); frmOwner = frm; }
/// <summary> /// Left nous button is pressed /// </summary> /// <param name="drawArea"></param> /// <param name="e"></param> public override void OnMouseDown(DrawArea drawArea, MouseEventArgs e) { //delete last goal draw object if (goalDrawID != -1) { int al = drawArea.TheLayers.ActiveLayerIndex; drawArea.TheLayers[al].Graphics.DeleteObjectByID(goalDrawID); } Point p = drawArea.BackTrackMouse(new Point(e.X, e.Y)); if (drawArea.CurrentPen == null) { DrawEllipse drawGoal = new DrawEllipse(p.X, p.Y, 4, 4, drawArea.LineColor, drawArea.FillColor, drawArea.DrawFilled, drawArea.LineWidth); AddNewObject(drawArea, drawGoal); goalDrawID = drawGoal.ID; } else { DrawEllipse drawGoal = new DrawEllipse(p.X, p.Y, 4, 4, drawArea.PenType, drawArea.FillColor, drawArea.DrawFilled); AddNewObject(drawArea, drawGoal); goalDrawID = drawGoal.ID; } PointF mapPoint = drawArea.World2Map(p); gm.PoseStamped pose = new Messages.geometry_msgs.PoseStamped(); pose.header = new m.Header(); pose.header.frame_id = "map"; pose.header.stamp = Ros_CSharp.ROS.GetTime(); pose.pose = new gm.Pose(); pose.pose.position = new gm.Point(); pose.pose.position.x = mapPoint.X; pose.pose.position.y = mapPoint.Y; //emQuaternion quaternion= tf.net.emQuaternion.FromRPY(new emVector3(0,90, 0)); //pose.pose.orientation = quaternion.ToMsg(); pose.pose.orientation = new gm.Quaternion(); pose.pose.orientation.x = 0; pose.pose.orientation.y = 0; pose.pose.orientation.z = 0; pose.pose.orientation.w = 1; goalPub.publish(pose); }
public static DrawObject GetObjectFromString(string s, Point lastEndPoint) { var informations = new Dictionary <ObjectInformation, string>(); //einzelne Daten werden in einem StringArray abgespeichert string[] data = s.Split('/'); //einzelne Informationen werden abgespeichert foreach (var informatin in data) { //teilt information in Art der Information und den Wert auf string[] splitInformation = informatin.Split(':'); try { informations.Add((ObjectInformation)Enum.Parse(typeof(ObjectInformation), splitInformation[0]), splitInformation[1]); } catch { } } //ObjektTyp wird abgespeichert ObjectTypes objectType = (ObjectTypes)Enum.Parse(typeof(ObjectTypes), informations.GetObjectInformation(ObjectInformation.objectType)); //-----Informationen werden abgespeichert //Endpunkt var endPoint = new Point( MainWindow.CentimeterTopixel(Double.Parse(informations.GetObjectInformation(ObjectInformation.endX))), MainWindow.CentimeterTopixel(Double.Parse(informations.GetObjectInformation(ObjectInformation.endY)))); DrawObject newObject = null; switch (objectType) { case ObjectTypes.Line: { var lineMode = (DrawLine.LineMode)Enum.Parse(typeof(DrawLine.LineMode), informations.GetObjectInformation(ObjectInformation.lineMode)); //ende des letzen Objekts ist der Start der Linie newObject = new DrawLine(lastEndPoint, endPoint, lineMode); } break; case ObjectTypes.Ellipse: { //Breite var width = double.Parse(informations.GetObjectInformation(ObjectInformation.width)); //Höhe var height = double.Parse(informations.GetObjectInformation(ObjectInformation.height)); newObject = new DrawEllipse(endPoint, width, height); } break; case ObjectTypes.Arc: { var radius = MainWindow.CentimeterTopixel(Double.Parse(informations.GetObjectInformation(ObjectInformation.radius))); var circleSizeAngle = double.Parse(informations.GetObjectInformation(ObjectInformation.circleSizeAngle)); var startAngle = double.Parse(informations.GetObjectInformation(ObjectInformation.startAngle)); var isInverted = Boolean.Parse(informations.GetObjectInformation(ObjectInformation.inverted)); newObject = new DrawCircle(lastEndPoint, radius, circleSizeAngle, startAngle, isInverted); } break; default: { newObject = null; } break; } return(newObject); }
public void LoadDisplay(TabGraphicPageControl tabdisplaypagecontrol) { //GraphicsList graphicslist = new Draw.GraphicsList(); Pages = new PageList(tabdisplaypagecontrol); foreach (tblBitmap tblbitmap in m_tblBitmapCollection) { DrawImage obj = new DrawImage(Pages); obj.Load(tblbitmap); Pages.GraphicPagesList[Pages.ActivePageNo].Add(obj); } foreach (tblADText tbladtext in m_tblADTextCollection) { DrawText obj = new DrawText(Pages); obj.Load(tbladtext); Pages.GraphicPagesList[Pages.ActivePageNo].Add(obj); } foreach (tblLine tblline in m_tblLineCollection) { DrawLine obj = new DrawLine(Pages); obj.Load(tblline); Pages.GraphicPagesList[Pages.ActivePageNo].Add(obj); } foreach (tblRect tblrect in m_tblRectCollection) { switch ((STATIC_OBJ_TYPE)tblrect.Type) { case STATIC_OBJ_TYPE.ID_ELLIPS: DrawEllipse drawellipse = new DrawEllipse(Pages); drawellipse.Load(tblrect); Pages.GraphicPagesList[Pages.ActivePageNo].Add(drawellipse); break; case STATIC_OBJ_TYPE.ID_ROUNDRECT: case STATIC_OBJ_TYPE.ID_RECT: DrawRectangle drawrectangle = new DrawRectangle(Pages); drawrectangle.Load(tblrect); Pages.GraphicPagesList[Pages.ActivePageNo].Add(drawrectangle); break; } } foreach (tblPolyline tblpolyline in m_tblPolylineCollection) { DrawPolyLine drawpolyline = new DrawPolyLine(Pages); drawpolyline.Load(tblpolyline); Pages.GraphicPagesList[Pages.ActivePageNo].Add(drawpolyline); } foreach (tblPolygon tblpolygon in m_tblPolygonCollection) { DrawPolygon drawpolygon = new DrawPolygon(Pages); drawpolygon.Load(tblpolygon); Pages.GraphicPagesList[Pages.ActivePageNo].Add(drawpolygon); } foreach (tblCurve tblcurve in m_tblCurveCollection) { DrawCurve drawcurve = new DrawCurve(Pages); drawcurve.Load(tblcurve); Pages.GraphicPagesList[Pages.ActivePageNo].Add(drawcurve); } Pages.GraphicPagesList[Pages.ActivePageNo].SortoIndex(); }
public void GetImageProcess()//显示图片时读取 { XmlNode node = xmlDoc.SelectSingleNode("PatientBackImage/Image[@Name='" + ImageName + "'] "); if (node != null) { if (node.HasChildNodes) { XmlNodeList xmlNolist = node.ChildNodes; foreach (XmlNode xn in xmlNolist) { XmlElement xmlE = (XmlElement)xn; switch (xmlE.Name) { case "DrawLine": DrawLine dl = new DrawLine(Convert.ToInt32(xmlE.GetAttribute("StartPointX")), Convert.ToInt32(xmlE.GetAttribute("StartPointY")), Convert.ToInt32(xmlE.GetAttribute("EndPointX")), Convert.ToInt32(xmlE.GetAttribute("EndPointY"))); dl.ID = Convert.ToInt32(xmlE.GetAttribute("ID")); frmImgProcess.imgProcess.drawArea.GraphicsList.UnselectAll(); frmImgProcess.imgProcess.drawArea.GraphicsList.Add(dl); frmImgProcess.imgProcess.drawArea.Capture = true; frmImgProcess.imgProcess.drawArea.Refresh(); break; case "DrawRectangle": DrawRectangle dr = new DrawRectangle(Convert.ToInt32(xmlE.GetAttribute("X")), Convert.ToInt32(xmlE.GetAttribute("Y")), Convert.ToInt32(xmlE.GetAttribute("Width")), Convert.ToInt32(xmlE.GetAttribute("Height"))); dr.ID = Convert.ToInt32(xmlE.GetAttribute("ID")); frmImgProcess.imgProcess.drawArea.GraphicsList.UnselectAll(); frmImgProcess.imgProcess.drawArea.GraphicsList.Add(dr); frmImgProcess.imgProcess.drawArea.Capture = true; frmImgProcess.imgProcess.drawArea.Refresh(); break; case "DrawEllipse": DrawEllipse de = new DrawEllipse(Convert.ToInt32(xmlE.GetAttribute("X")), Convert.ToInt32(xmlE.GetAttribute("Y")), Convert.ToInt32(xmlE.GetAttribute("Width")), Convert.ToInt32(xmlE.GetAttribute("Height"))); de.ID = Convert.ToInt32(xmlE.GetAttribute("ID")); frmImgProcess.imgProcess.drawArea.GraphicsList.UnselectAll(); frmImgProcess.imgProcess.drawArea.GraphicsList.Add(de); frmImgProcess.imgProcess.drawArea.Capture = true; frmImgProcess.imgProcess.drawArea.Refresh(); break; case "DrawPoint": DrawPoint dp = new DrawPoint(Convert.ToInt32(xmlE.GetAttribute("X")), Convert.ToInt32(xmlE.GetAttribute("Y"))); dp.ID = Convert.ToInt32(xmlE.GetAttribute("ID")); frmImgProcess.imgProcess.drawArea.GraphicsList.UnselectAll(); frmImgProcess.imgProcess.drawArea.GraphicsList.Add(dp); frmImgProcess.imgProcess.drawArea.Capture = true; frmImgProcess.imgProcess.drawArea.Refresh(); break; case "DrawPolygon": DrawPolygon dpy = new DrawPolygon(); string pointStr = xmlE.GetAttribute("pointStr"); string[] poList = pointStr.Split('$'); string[] p = { }; for (int i = 0; i < poList.Length; i++) { if (poList[i].ToString() != "") { p = poList[i].Split(','); Point point = new Point(Convert.ToInt32(p[0]), Convert.ToInt32(p[1])); dpy.pointArray.Add(point); } } dpy.ID = Convert.ToInt32(xmlE.GetAttribute("ID")); frmImgProcess.imgProcess.drawArea.GraphicsList.UnselectAll(); frmImgProcess.imgProcess.drawArea.GraphicsList.Add(dpy); frmImgProcess.imgProcess.drawArea.Capture = true; frmImgProcess.imgProcess.drawArea.Refresh(); break; case "TextBox": ToolText tx = new ToolText(frmImgProcess.imgProcess.drawArea); tx.Location = new Point(Convert.ToInt32(xmlE.GetAttribute("X")), Convert.ToInt32(xmlE.GetAttribute("Y"))); tx.Width = Convert.ToInt32(xmlE.GetAttribute("Width")); tx.Height = Convert.ToInt32(xmlE.GetAttribute("Height")); tx.Name = xmlE.GetAttribute("ID"); tx.Min = true; tx.Max = true; tx.IsChangeSize = true; tx.ReadOnly = false; tx.IsMove = true; tx.Text = xmlE.GetAttribute("Content"); tx.ForeColor = System.Drawing.Color.Red; frmImgProcess.imgProcess.drawArea.Controls.Add(tx); break; case "Process": XmlNode nodeProcess = xmlDoc.SelectSingleNode("PatientBackImage/Image[@Name='" + ImageName + "']/Process "); if (nodeProcess != null) { if (nodeProcess.HasChildNodes) { XmlNodeList xmlNodeProcesslist = nodeProcess.ChildNodes; foreach (XmlNode xn2 in xmlNodeProcesslist) { XmlElement xmlE2 = (XmlElement)xn2; switch (xmlE2.Name) { case "BrightnessCorrection": //亮度 BrightnessCorrection brightnesscorr = new BrightnessCorrection(); brightnesscorr.AdjustValue = double.Parse(xmlE2.GetAttribute("Value")); frmImgProcess.imgProcess.ApplyFilter(brightnesscorr); break; case "ContrastCorrection": //对比 ContrastCorrection contrastCorr = new ContrastCorrection(); contrastCorr.Factor = double.Parse(xmlE2.GetAttribute("Value")); frmImgProcess.imgProcess.ApplyFilter(contrastCorr); break; case "HueModifier": //色相 HueModifier huemodifier = new HueModifier(); huemodifier.Hue = int.Parse(xmlE2.GetAttribute("Value")); frmImgProcess.imgProcess.ApplyFilter(huemodifier); break; case "Saturation": //饱和度 SaturationCorrection saturationcorr = new SaturationCorrection(); saturationcorr.AdjustValue = double.Parse(xmlE2.GetAttribute("Value")); frmImgProcess.imgProcess.ApplyFilter(saturationcorr); break; case "GrayscaleBT709": //灰度 GrayscaleBT709 grayscalebt = new GrayscaleBT709(); frmImgProcess.imgProcess.ApplyFilter(grayscalebt); break; case "Filter": //过滤 ColorFiltering colorfilter = new ColorFiltering(); IntRange red = new IntRange(0, 255); IntRange green = new IntRange(0, 255); IntRange blue = new IntRange(0, 255); byte fillR = 0, fillG = 0, fillB = 0; string fillType = ""; red.Min = int.Parse(xmlE2.GetAttribute("RedMin")); red.Max = int.Parse(xmlE2.GetAttribute("RedMax")); green.Min = int.Parse(xmlE2.GetAttribute("GreenMin")); green.Max = int.Parse(xmlE2.GetAttribute("GreenMax")); blue.Min = int.Parse(xmlE2.GetAttribute("BlueMin")); blue.Max = int.Parse(xmlE2.GetAttribute("BlueMax")); fillR = byte.Parse(xmlE2.GetAttribute("FillRed")); fillG = byte.Parse(xmlE2.GetAttribute("FillGreen")); fillB = byte.Parse(xmlE2.GetAttribute("FillBlue")); fillType = xmlE2.GetAttribute("FillType"); colorfilter.Red = red; colorfilter.Green = green; colorfilter.Blue = blue; colorfilter.FillColor = new RGB(fillR, fillG, fillB); if (fillType == "OutSide") { colorfilter.FillOutsideRange = true; } else { colorfilter.FillOutsideRange = false; } frmImgProcess.imgProcess.ApplyFilter(colorfilter); break; case "Gaussian": //柔化 GaussianBlur gaussianBlur = new GaussianBlur(); gaussianBlur.Sigma = double.Parse(xmlE2.GetAttribute("Sigma")); gaussianBlur.Size = int.Parse(xmlE2.GetAttribute("Size")); frmImgProcess.imgProcess.ApplyFilter(gaussianBlur); break; case "DifferenceEdgeDetector": //边缘增强 DifferenceEdgeDetector differenceEdgeD = new DifferenceEdgeDetector(); frmImgProcess.imgProcess.ApplyFilter(differenceEdgeD); break; case "RotateFlip": //镜像 frmImgProcess.imgProcess.drawArea.Image.RotateFlip(RotateFlipType.RotateNoneFlipX); frmImgProcess.imgProcess.drawArea.Refresh(); break; case "PerlinNoise": //去噪 string value = ""; value = xmlE2.GetAttribute("Value"); float imageWidth = 0; float imageHeight = 0; switch (value) { case "Marble": filter = new Texturer(new MarbleTexture(imageWidth / 96, imageHeight / 48), 0.7f, 0.3f); break; case "Wood": filter = new Texturer(new WoodTexture(), 0.7f, 0.3f); break; case "Clouds": filter = new Texturer(new CloudsTexture(), 0.7f, 0.3f); break; case "Labyrinth": filter = new Texturer(new LabyrinthTexture(), 0.7f, 0.3f); break; case "Textile": filter = new Texturer(new TextileTexture(), 0.7f, 0.3f); break; case "Dirty": TexturedFilter f = new TexturedFilter(new CloudsTexture(), new Sepia()); f.PreserveLevel = 0.30f; f.FilterLevel = 0.90f; filter = f; break; case "Rusty": filter = new TexturedFilter(new CloudsTexture(), new Sepia(), new GrayscaleBT709()); break; } frmImgProcess.imgProcess.ApplyFilter(filter); break; case "Sharpen": Sharpen sharpen = new Sharpen(); frmImgProcess.imgProcess.ApplyFilter(sharpen); break; case "Mean": Mean mean = new Mean(); frmImgProcess.imgProcess.ApplyFilter(mean); break; } } } } break; } } } } }
public void DrawEllipse() { curOperationMode = ModeEnum.Draw; curDraw = new DrawEllipse(); }
public void ProcessRecord(int flags, EmfPlusRecordType recordType,byte[] RecordData) { switch (recordType) { case EmfPlusRecordType.Header: break; case EmfPlusRecordType.SetPageTransform: EMFSetPageTransform P = EMFSetPageTransform.getTransform(flags, RecordData); break; case EmfPlusRecordType.Object: EMFRecordObject O = EMFRecordObject.getObject(flags,RecordData); if (O != null) { if (ObjectTable.Contains(O.ObjectID)) { ObjectTable[O.ObjectID] = O; } else { ObjectTable.Add(O.ObjectID,O); } } break; case EmfPlusRecordType.DrawLines: //After each instruction we must do something, as the object table is constantly being changed... //and we need to use what is currently in the table! DrawLines DL = new DrawLines(X, Y, Width, Height, ObjectTable); PageItems.AddRange(DL.Process(flags,RecordData)); break; case EmfPlusRecordType.DrawString: DrawString DS = new DrawString(X, Y, Width, Height, ObjectTable); PageItems.AddRange(DS.Process(flags, RecordData)); break; case EmfPlusRecordType.FillRects: FillRects FR = new FillRects(X, Y, Width, Height,ObjectTable); PageItems.AddRange(FR.Process(flags, RecordData)); break; case EmfPlusRecordType.DrawRects: DrawRects DR = new DrawRects(X, Y, Width, Height,ObjectTable); PageItems.AddRange(DR.Process(flags, RecordData)); break; case EmfPlusRecordType.FillPolygon: FillPolygon FPo = new FillPolygon(X, Y, Width, Height, ObjectTable); PageItems.AddRange(FPo.Process(flags, RecordData)); break; case EmfPlusRecordType.DrawEllipse: DrawEllipse DE = new DrawEllipse(X, Y, Width, Height,ObjectTable); PageItems.AddRange(DE.Process(flags, RecordData)); break; case EmfPlusRecordType.FillEllipse: FillEllipse FE = new FillEllipse(X, Y, Width, Height,ObjectTable); PageItems.AddRange(FE.Process(flags, RecordData)); break; case EmfPlusRecordType.FillPie: FillPie FP = new FillPie(X, Y, Width, Height, ObjectTable); PageItems.AddRange(FP.Process(flags, RecordData)); break; case EmfPlusRecordType.DrawPie: DrawPie DP = new DrawPie(X, Y, Width, Height, ObjectTable); PageItems.AddRange(DP.Process(flags, RecordData)); break; case EmfPlusRecordType.DrawCurve: DrawCurve DC = new DrawCurve(X, Y, Width, Height, ObjectTable); PageItems.AddRange(DC.Process(flags, RecordData)); break; case EmfPlusRecordType.Comment: Comment CM = new Comment(X, Y, Width, Height, ObjectTable); PageItems.AddRange(CM.Process(flags, RecordData)); break; default: break; } }