public static void GetLocation(Wire wire1, Wire wire2, out PointEx start, out PointEx end) { var line1 = wire1.Line as ILine; var start1 = wire1.Start; var end1 = wire1.End; var line2 = wire2.Line as ILine; var start2 = wire2.Start; var end2 = wire2.End; start = null; end = null; if (start1 != null) { var margin = line1.GetMargin(); start = new PointEx(margin.Left, margin.Top); } if (end1 != null) end = new PointEx(line1.GetX2(), line1.GetY2()); if (start2 != null) { var margin = line2.GetMargin(); start = new PointEx(margin.Left, margin.Top); } if (end2 != null) end = new PointEx(line2.GetX2(), line2.GetY2()); }
private void EditPaste_Click(object sender, RoutedEventArgs e) { var point = new PointEx(Editor.Context.RightClick.X, Editor.Context.RightClick.Y); Editor.Paste(point, true); Editor.Context.SkipLeftClick = false; }
public static void GetLocation(Wire wire1, Wire wire2, out PointEx start, out PointEx end) { var line1 = wire1.Line as ILine; var start1 = wire1.Start; var end1 = wire1.End; var line2 = wire2.Line as ILine; var start2 = wire2.Start; var end2 = wire2.End; start = null; end = null; if (start1 != null) { var margin = line1.GetMargin(); start = new PointEx(margin.Left, margin.Top); } if (end1 != null) { end = new PointEx(line1.GetX2(), line1.GetY2()); } if (start2 != null) { var margin = line2.GetMargin(); start = new PointEx(margin.Left, margin.Top); } if (end2 != null) { end = new PointEx(line2.GetX2(), line2.GetY2()); } }
private void InsertAndGate(ICanvas canvas, PointEx point) { Editor.Snapshot(canvas, true); var element = Insert.AndGate(canvas, point != null ? point : InsertPointGate, Editor.Context.DiagramCreator, Editor.Context.EnableSnap); Editor.SelectOneElement(element, true); }
public YuGiStructure() { CardSize = new PointEx(50, 72); CardSize.PropertyChanged += ValueChanged; WindowSizeOffset.PropertyChanged += ValueChanged; DuelField.PropertyChanged += ValueChanged; DeckEditor.PropertyChanged += ValueChanged; }
/// <summary> /// Saves path to the OSMDB /// </summary> /// <param name="path">The list of polylines that represent matched path</param> /// <returns>OSMDB with path converted to the OSM format</returns> public OSMDB SaveToOSM(IList <Polyline <IPointGeo> > path) { _db = new OSMDB(); _dbCounter = -1; IPointGeo lastPoint = null; OSMNode node = null; foreach (var line in path) { if (line.Nodes.Count == 0) { continue; } if (line.Nodes.Count == 1) { throw new Exception(); } OSMWay way = new OSMWay(_dbCounter--); way.Tags.Add(new OSMTag("way-id", ((PolylineID)line).WayID.ToString())); way.Tags.Add(new OSMTag("order", (_db.Ways.Count + 1).ToString())); _db.Ways.Add(way); foreach (var point in line.Nodes) { if (point != lastPoint) { lastPoint = point; PointEx pt = (PointEx)point; node = new OSMNode(_dbCounter--, pt.Latitude, pt.Longitude); if (pt.NodeID != 0) { node.Tags.Add(new OSMTag("node-id", pt.NodeID.ToString())); } if (pt.Time != DateTime.MinValue) { node.Tags.Add(new OSMTag("time", pt.Time.ToString())); } if (pt.Crossroad) { node.Tags.Add(new OSMTag("crossroad", "yes")); } _db.Nodes.Add(node); } way.Nodes.Add(node.ID); } } return(_db); }
private void DiagramCanvas_Drop(object sender, DragEventArgs e) { // Tag if (e.Data.GetDataPresent("Tag")) { var tag = e.Data.GetData("Tag") as Tag; if (tag != null) { var point = e.GetPosition(DiagramCanvas); var insertPoint = new PointEx(point.X, point.Y); var canvas = Editor.Context.CurrentCanvas; var type = IsTagInputOrOutput(canvas, insertPoint); if (type == TagDragAndDropType.Input) { Editor.Snapshot(canvas, true); var element = Insert.Input(DiagramCanvas, insertPoint, Editor.Context.DiagramCreator, Editor.Context.EnableSnap); element.SetData(tag); e.Handled = true; } else if (type == TagDragAndDropType.Output) { Editor.Snapshot(canvas, true); var element = Insert.Output(DiagramCanvas, insertPoint, Editor.Context.DiagramCreator, Editor.Context.EnableSnap); element.SetData(tag); e.Handled = true; } } } // Table else if (e.Data.GetDataPresent("Table")) { var table = e.Data.GetData("Table") as DiagramTable; if (table != null) { var canvas = Editor.Context.CurrentCanvas; Editor.Snapshot(canvas, true); canvas.SetData(table); // TODO: TableGrid.SetData(this, table); e.Handled = true; } } }
private void CreateAdorner(Canvas canvas, PointEx origin, PointEx point) { Adorner = new SelectionAdorner(canvas); Adorner.Zoom = GetZoomScaleTransform().ScaleX; Adorner.SelectionOrigin = new Point(origin.X, origin.Y); Adorner.SelectionRect = new RectEx(origin.X, origin.Y, point.X, point.Y); Adorner.SnapsToDevicePixels = false; RenderOptions.SetEdgeMode(Adorner, EdgeMode.Aliased); AdornerLayer.GetAdornerLayer(canvas).Add(Adorner); Adorner.InvalidateVisual(); }
private void btnRegret_Click(object sender, EventArgs e) { if (regret.Count == 0) { return; } PointEx p = regret.Pop(); board[p.x, p.y] = 0; intStatus = p.state; DrawBoard(pic, false); }
private void InsertOrGate_Click(object sender, RoutedEventArgs e) { var canvas = Editor.Context.CurrentCanvas; Editor.Snapshot(canvas, true); var point = new PointEx(Editor.Context.RightClick.X, Editor.Context.RightClick.Y); Insert.OrGate(canvas, point, Editor.Context.DiagramCreator, Editor.Context.EnableSnap); Editor.Context.LastInsert = Constants.TagElementOrGate; Editor.Context.SkipLeftClick = false; }
public WndEmojiInputer() { _showingIndex = -1; InitializeComponent(); Point point = new Point(30.0, 30.0); point = PointEx.xConvertPhisicalToLogical(point); rect.Width = point.X; rect.Height = point.Y; rect.RadiusX = 5.0; rect.RadiusY = 5.0; rect.Stroke = Brushes.Gray; tblk.Background = Brushes.Wheat; }
/// <summary> /// 查找控件内指定坐标的子控件,按 Z 轴可见序查找 /// </summary> /// <param name="control">控件</param> /// <param name="p">控件坐标系内的点</param> /// <returns>查找到返回子控件,否则返回 null</returns> internal static UIControl FindUIChildInternal(IUIControl control, Point p) { UIControl child; for (int i = control.UIControls.Count - 1; i >= 0; i--)//按 Z 轴顺序遍历 { child = control.UIControls[i]; if (child.Visible && child.Bounds.Contains(p) && (child.Region == null || child.Region.IsVisible(PointEx.Offset(p, -child.Left, -child.Top)))) { return(FindUIChildInternal(child, PointEx.Offset(p, -child.Left, -child.Top)) ?? child); } } return(null); }
/// <summary> /// Gets PointEx from the internal storage or creates a new one (for given point) /// </summary> /// <param name="point"></param> /// <returns></returns> PointEx GetOrCreatePointEx(IPointGeo point, DateTime time) { if (_points.ContainsKey(point)) { if (_points[point].Time == DateTime.MinValue || _points[point].Time == time) { _points[point].Time = time; return(_points[point]); } else { PointEx result = new PointEx() { Latitude = point.Latitude, Longitude = point.Longitude, Elevation = point.Elevation, Time = time }; _points[point] = result; OSMNode pointOSM = point as OSMNode; if (pointOSM != null) { result.NodeID = pointOSM.ID; if (pointOSM.Tags.ContainsTag("crossroad")) { result.Crossroad = true; } } return(result); } } else { PointEx result = new PointEx() { Latitude = point.Latitude, Longitude = point.Longitude, Elevation = point.Elevation, Time = time }; _points.Add(point, result); OSMNode pointOSM = point as OSMNode; if (pointOSM != null) { result.NodeID = pointOSM.ID; if (pointOSM.Tags.ContainsTag("crossroad")) { result.Crossroad = true; } } return(result); } }
private static void TryAddVertex(List <PointEx> points, Vector3 vertex, int index) { foreach (PointEx point in points) { if (IsSameVector(point.Vertex, vertex)) { point.indices.Add(index); return; } } PointEx pointEx = new PointEx(); pointEx.Vertex = vertex; pointEx.indices.Add(index); points.Add(pointEx); }
private PointEx GetInsertionPoint() { PointEx insertionPoint = null; var relativeTo = DiagramControl.DiagramCanvas; var point = Mouse.GetPosition(relativeTo); double x = point.X; double y = point.Y; double width = relativeTo.Width; double height = relativeTo.Height; if (x >= 0.0 && x <= width && y >= 0.0 && y <= height) { insertionPoint = new PointEx(x, y); } return(insertionPoint); }
private void DrawLine(MapPointEx[] arrPoint) { if (arrPoint != null && arrPoint.Length > 1) { mapLayer.DrawPolyLine(arrPoint.ToList(), new I_GS_MapBase.Portal.SymbolElement("track") { ControlTemplate = Obj.screenMap.MainMap.Resources["TrackLine"], DataSources = new List<KeyValuePair<string, object>>{ new KeyValuePair<string,object>("Visibled","Visible"), } }); ClientUtile client = ClientUtile.Create(); double angle = client.GetAzimuthAngle(arrPoint[1].X, arrPoint[1].Y, arrPoint[0].X, arrPoint[0].Y); PointEx pNew = client.GetRelativePoint(new PointEx(arrPoint[1].X, arrPoint[1].Y),angle,2); mapLayer.DrawArrow(new List<MapPointEx>() { Obj.screenMap.GetMapPointEx(pNew.X,pNew.Y), arrPoint[1] }, new I_GS_MapBase.Portal.SymbolElement("track") { DataSources = new List<KeyValuePair<string, object>>{ new KeyValuePair<string,object>(GraphicStyle.ArrowSize.ToString(),"10"), new KeyValuePair<string,object>(GraphicStyle.ArrowColor.ToString(),"Green"), } }); } }
/// <summary> /// Creates a new Polyline as part of the result and assigns times for the start and end points /// </summary> /// <param name="from"></param> /// <param name="to"></param> /// <param name="fromTime"></param> /// <param name="totime"></param> /// <param name="road"></param> /// <returns></returns> Polyline <IPointGeo> CreateLine(IPointGeo from, IPointGeo to, DateTime fromTime, DateTime totime, ConnectionGeometry road, long Id) { Polyline <IPointGeo> line = new Polyline <IPointGeo>() { WayID = road.WayID, Id = Id }; PointEx toAdd = GetOrCreatePointEx(from, fromTime); line.Nodes.Add(toAdd); var points = Topology.GetNodesBetweenPoints(from, to, road); foreach (var point in points) { line.Nodes.Add(GetOrCreatePointEx(point, DateTime.MinValue)); } toAdd = GetOrCreatePointEx(to, totime); line.Nodes.Add(toAdd); return(line); }
private void InsertOutput_Click(object sender, RoutedEventArgs e) { var canvas = Editor.Context.CurrentCanvas; Editor.Snapshot(canvas, true); var point = new PointEx(Editor.Context.RightClick.X, Editor.Context.RightClick.Y); Insert.Output(canvas, point, Editor.Context.DiagramCreator, Editor.Context.EnableSnap); Editor.Context.LastInsert = Constants.TagElementOutput; Editor.Context.SkipLeftClick = false; }
/// <summary> /// 根据屏幕范围获得网格信息 /// </summary> /// <param name="p_leftTopPoint"></param> /// <param name="p_rightBottomPoint"></param> /// <param name="p_intervalValue"></param> /// <param name="p_fixedPoint"></param> /// <returns>返回大网格范围,和经纬度的网格步长,存储格式double[4],double[2] public List <double[]> getJHParam(double[] p_leftTopPoint, double[] p_rightBottomPoint, double p_intervalValue, double[] p_fixedPoint = null) { if (p_fixedPoint != null) { FixedPoint = new double[] { p_fixedPoint[0], p_fixedPoint[1] }; } if (FixedPoint == null) { FixedPoint = new double[] { p_leftTopPoint[0], p_leftTopPoint[1] }; } PointEx pBase = Utils.MapFun.MainMap.MapToScreen(Utils.MapFun.MainMap.MapPointFactory.Create(FixedPoint[0], FixedPoint[1])); double xInterval = 0, yInterval = 0; PointEx pBase1 = new PointEx(pBase.X + p_intervalValue, pBase.Y); MapPointEx p1 = Utils.MapFun.MainMap.ScreenToMap(pBase1); xInterval = Math.Abs(p1.X - FixedPoint[0]); PointEx pBase2 = new PointEx(pBase.X, pBase.Y + p_intervalValue); MapPointEx p2 = Utils.MapFun.MainMap.ScreenToMap(pBase2); yInterval = Math.Abs(p2.Y - FixedPoint[1]); double x1 = FixedPoint[0]; if (x1 > p_leftTopPoint[0]) { while (x1 > p_leftTopPoint[0]) { x1 -= xInterval; } } else { while (x1 < p_leftTopPoint[0]) { x1 += xInterval; } } int cc = 0; double y1 = FixedPoint[1]; if (y1 > p_leftTopPoint[1]) { while (y1 > p_leftTopPoint[1]) { y1 -= yInterval; cc++; if (cc == 4) { cc = 0; } } } else { cc = 4; while (y1 < p_leftTopPoint[1]) { y1 += yInterval; cc--; if (cc < 0) { cc = 4; } } } if (cc == 4) { cc = 0; } double x2 = FixedPoint[0]; if (x2 > p_rightBottomPoint[0]) { while (x2 > p_rightBottomPoint[0]) { x2 -= xInterval; } } else { while (x2 < p_rightBottomPoint[0]) { x2 += xInterval; } } double loOffset = Math.Abs(((FixedPoint[0] - x2) % (xInterval / 3)) * (xInterval / 3)); double y2 = FixedPoint[1]; if (y2 > p_rightBottomPoint[1]) { while (y2 > p_rightBottomPoint[1]) { y2 -= yInterval; } } else { while (y2 < p_rightBottomPoint[1]) { y2 += yInterval; } } List <double[]> lst = new List <double[]>(); double[] xy2 = new double[4] { x1, y1, x2, y2 }; lst.Add(xy2);//存储范围坐标 double[] wh = new double[2] { xInterval, yInterval }; lst.Add(wh);//存储经纬度步长,单位度 double[] firstOffsetIndex = new double[] { cc, loOffset }; lst.Add(firstOffsetIndex); return(lst); }
public void ReadXml(XmlReader reader) { if (reader.IsEmptyElement) { reader.Read(); return; } XmlSerializer keySerializer = null; XmlSerializer valueSerializer = new XmlSerializer(typeof(TValue)); Type keyType = typeof(TKey); bool isFlatKey = (keyType.FullName == "System.String" || keyType.FullName == "System.Drawing.Point" || keyType.IsEnum); if (!isFlatKey) { keySerializer = new XmlSerializer(typeof(TKey)); } reader.Read(); while (reader.ReadToNextSibling(this.ItemNodeName)) { TKey key; TValue value; if (isFlatKey) { if (keyType.FullName == "System.String") { key = (TKey)(object)reader.GetAttribute(this.KeyNodeName); } else if (keyType.FullName == "System.Drawing.Point") { key = (TKey)(object)PointEx.Parse(reader.GetAttribute(this.KeyNodeName)); } else if (keyType.IsEnum) { string keyRaw = reader.GetAttribute(this.KeyNodeName); if (keyRaw == null) { throw new FormatException( string.Format("The XML-Attribute \"{0}\" is missing on element \"{1}\".", this.KeyNodeName, reader.Name) ); } key = (TKey)Enum.Parse(keyType, keyRaw); } else { throw new InvalidOperationException(); } reader.ReadStartElement(this.ItemNodeName); value = (TValue)valueSerializer.Deserialize(reader); } else { reader.ReadStartElement(this.ItemNodeName); reader.ReadStartElement(this.KeyNodeName); key = (TKey)keySerializer.Deserialize(reader); reader.ReadEndElement(); reader.ReadStartElement(this.ValueNodeName); value = (TValue)valueSerializer.Deserialize(reader); reader.ReadEndElement(); } reader.ReadEndElement(); this.Add(key, value); } reader.ReadEndElement(); }
private PointEx GetInsertionPoint() { PointEx insertionPoint = null; var relativeTo = DiagramControl.DiagramCanvas; var point = Mouse.GetPosition(relativeTo); double x = point.X; double y = point.Y; double width = relativeTo.Width; double height = relativeTo.Height; if (x >= 0.0 && x <= width && y >= 0.0 && y <= height) { insertionPoint = new PointEx(x, y); } return insertionPoint; }
private void InsertOutput(ICanvas canvas, PointEx point) { Editor.Snapshot(canvas, true); var element = Insert.Output(canvas, point != null ? point : InsertPointOutput, Editor.Context.DiagramCreator, Editor.Context.EnableSnap); Editor.SelectOneElement(element, true); }