public void startCircle(MouseEventArgs e) { PointD CurrPosition = new PointD(e.ClientX - LocalData.SVGPosition.X, e.ClientY - LocalData.SVGPosition.Y); BPaintCircle new_BPaintCircle = new BPaintCircle(); if (ObjectsList.Any()) { new_BPaintCircle.ObjectID = ObjectsList.Max(x => x.ObjectID) + 1; cmd_Clear_Selection(); cmd_Clear_Editing(); } else { new_BPaintCircle.ObjectID = 1; } BPaintVertex startVertex = new BPaintVertex(CurrPosition, Color1); VerticesList.Add(startVertex); new_BPaintCircle.Selected = true; new_BPaintCircle.EditMode = true; new_BPaintCircle.Color = Color1; new_BPaintCircle.LineWidth = LineWidth1; new_BPaintCircle.Position = startVertex; BPaintVertex endVertex = new BPaintVertex(CurrPosition, Color1); new_BPaintCircle.end = endVertex; VerticesList.Add(endVertex); CurrPaintMode = BPaintMode.movingAnElement; bpVertexUnderMousePointer = endVertex; ObjectsList.Add(new_BPaintCircle); }
public static RectD Get_Border_Points(BPaintCircle Par_obj, bool padding = true) { RectD result = new RectD(); List <PointD> data = new List <PointD>(); PointD cPoint = Par_obj.Position.PtD; double r = Par_obj.Position.PtD.DistanceTo(Par_obj.end.PtD); data.Add(cPoint + new SizeD(0, r)); data.Add(cPoint + new SizeD(0, -r)); data.Add(cPoint + new SizeD(r, 0)); data.Add(cPoint + new SizeD(-r, 0)); result.x = data.Min(j => j.X); result.y = data.Min(j => j.Y); result.width = data.Max(j => j.X) - result.x; result.height = data.Max(j => j.Y) - result.y; if (padding) { Set_Padding(result); } return(result); }