//添加标注到地图上 void iMSMap1_MapReady(IMSMapEvent e) { MarkLayer m_markLayer = new MarkLayer(); //初始化标注图层 iMSMap1.AddChild(m_markLayer); //添加到地图容器中 IMSMark mark; //定义标注对象 pnt = new Point(114.331901, 30.548992); m_markLayer.EnableZoomAnimation = true; //允许随地图缩放 m_markLayer.EnableMarkHiden = false; //不允许隐藏标注 m_markLayer.EnablePolymericMark = true; //允许标注聚合功能 mark = new IMSMark(new Image() //初始化标注对象 { Source = new BitmapImage(new Uri("/Images/markimg1.png", UriKind.Relative)), Width = 80, Height = 80 }, CoordinateType.Logic, m_markLayer); mark.X = pnt.X; //设置标注坐标 mark.Y = pnt.Y; m_markLayer.AddMark(mark); //添加到标注图层 mark.MouseClickCallback = new MouseOperDelegate(mark_click); // mark.MouseEnterCallback = new MouseOperDelegate(mark_enter); // mark.MouseLeaveCallback = new MouseOperDelegate(mark_leave); Canvas.SetZIndex(DFwin, Canvas.GetZIndex(this.iMSMap1) + 12); DFwin.Margin = new Thickness(iMSMap1.LogicToScreen(pnt.X, pnt.Y).X + 15, iMSMap1.LogicToScreen(pnt.X, pnt.Y).Y + 15, 0, 0); DFwin.Visibility = Visibility.Collapsed; DFwin.AllowDrop = false; iMSMap1.MapViewChange += new ZDIMS.Event.IMSMapEventHandler(iMSMap1_MapViewChange); }
private void addmyMark(string name, double x, double y) { //初始化标注图层,并将其作为子元素添加到地图容器 if (this.markLayer1 == null) { this.markLayer1 = new MarkLayer(); this.iMSMap1.AddChild(this.markLayer1); } //创建并实例化标注控件,对其属性进行设置 Image img = new Image(); BitmapImage b = new BitmapImage(new Uri("/images/walk.png", UriKind.RelativeOrAbsolute)); img.Source = b; img.Width = 25; img.Height = 30; IMSmyMark mark = new IMSmyMark(img); mark.CoordinateType = CoordinateType.Logic; mark.markName = name; mark.X = x; mark.Y = y; mark.EnableRevisedPos = true; mark.MarkClickCallback += new MarkClickDelegate(onClick); //标注点击事件回调 mark.MarkControl.MouseLeave += new MouseEventHandler(img_MouseLeave); //标注鼠标移出事件监听 markLayer1.AddMark(mark); //将标注添加到标注图层中 }
private Mark CreateMark(MarkDataBase ipdata, bool hasSameTimingMark, int sameTimingMarks) { var emd = ipdata as ExMarkData; Mark mk = null; if (emd != null) { var noteType = EventManager.GetNoteType(ipdata.Time); var displayState = EventManager.GetCorrectDisplaystate(ipdata.Time); switch (noteType) { case NoteType.Normal: mk = new NormalExMark(device, resourceManager, imagepathes, emd, randomChangeManager[emd.ButtonType], evals, adjustgaptime, circlepoints, displayState, noteType, sameTimingMarks, ipdata.Parameters, postDrawManager); break; case NoteType.AC: mk = new HoldExMark(device, resourceManager, imagepathes, emd, randomChangeManager[emd.ButtonType], evals, adjustgaptime, displayState, noteType, sameTimingMarks, ipdata.Parameters, postDrawManager); break; case NoteType.ACFT: if (IsScratch(ipdata.ButtonType, sameTimingMarks)) { var slideScale = EventManager.GetSlideScale(ipdata.Time); mk = new SlideExMark(device, resourceManager, imagepathes, emd, randomChangeManager[emd.ButtonType], evals, adjustgaptime, displayState, noteType, slideScale, sameTimingMarks, ipdata.Parameters, postDrawManager); } else { goto case NoteType.AC; } break; } } else { var md = ipdata as MarkData; mk = new Mark(device, resourceManager, imagepathes, md, randomChangeManager[md.ButtonType], evals, adjustgaptime, EventManager.GetCorrectDisplaystate(ipdata.Time), EventManager.GetNoteType(ipdata.Time), sameTimingMarks, ipdata.Parameters, postDrawManager); } mk.HasSameTimingMark = hasSameTimingMark; if (scriptManager.ProcessMarkBPMManager.Process(mk, out float bpm)) { mk.FixedBPM = bpm; } if (mk != null) { MarkLayer.InsertChild(mk, 0); mk.Initialize(scriptManager.CreateMarkManager.CreateMark, scriptManager.ProcessAllowedButtonsManager.Process); mk.CheckColorPosition += mk_CheckColorPosition; mk.ChangeMarkEvaluate += mk_ChangeMarkEvaluate; } return(mk); }
/// <summary> /// 门店查询 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void market_Search_Click(object sender, RoutedEventArgs e) { this.markLayer.ManuallyAddMarkObj = null; if (market_S == null) { market_S = new DataForm(); } this.market_S.mapContainer = this.mapContainer; this.market_S.markLayer = this.markLayer; market_S.Show(); }
public BusAnalyse(MarkLayer markLayer, GraphicsLayer graphicsLayer) { ServerAddress = "http://127.0.0.1/relayhandlersite/relayhandler.ashx"; MarkLayer = markLayer; markLayer.EnablePolymericMark = false; GraphicsLayer = graphicsLayer; InitializeComponent(); dialogPanel1.OnClose += new RoutedEventHandler(Close); m_timer = new DispatcherTimer(); m_timer.Interval = new TimeSpan(0, 0, 0, 0, 900); m_timer.Tick += new EventHandler(TextChanged_Tick); }
private void ClearBarrier(object sender = null, RoutedEventArgs e = null) { if (MarkLayer != null) { for (int i = 0; i < m_barrierMark.Count; i++) { MarkLayer.RemoveMark(m_barrierMark[i]); } m_barrierMark.Clear(); m_barrierDots = ""; } }
public trackplaycontrol(MarkLayer markLayer, GraphicsLayer graphicsLayer) { InitializeComponent(); MarkLayer = markLayer; GraphicsLayer = graphicsLayer; this.pause.MouseEnter += new MouseEventHandler(pause_MouseEnter); this.stop.MouseEnter += new MouseEventHandler(pause_MouseEnter); this.stop.MouseLeave += new MouseEventHandler(stop_MouseLeave); this.pause.MouseLeave += new MouseEventHandler(stop_MouseLeave); dialogPanel1.OnClose += new RoutedEventHandler(Close); stopsData = setstopsData(); }
public BusAnalyse(MarkLayer markLayer, GraphicsLayer graphicsLayer) { // MessageBox.Show(this.SvrUrl); ServerAddress = this.SvrUrl; MarkLayer = markLayer; markLayer.EnablePolymericMark = false; GraphicsLayer = graphicsLayer; InitializeComponent(); //dialogPanel1.OnClose += new RoutedEventHandler(Close); m_timer = new DispatcherTimer(); m_timer.Interval = new TimeSpan(0, 0, 0, 0, 900); m_timer.Tick += new EventHandler(TextChanged_Tick); }
private void StartPntAdd1(MarkLayer markLayer, IMark mark, Point logicPnt) { Point MarkPnt = new Point(logicPnt.X, logicPnt.Y); this.markLayer.ManuallyAddMarkObj = null; NewMarkInfo = new AddMarket(); NewMarkInfo.markLayer = this.markLayer; NewMarkInfo.tmp = mark as IMSMark; NewMarkInfo.markPnt = MarkPnt; NewMarkInfo.mapContainer = this.mapContainer; NewMarkInfo.Show(); markLayer.ManuallyAddMarkOverCallback -= new ManuallyAddMarkDelegate(StartPntAdd1); }
public NetAnalyse(MarkLayer markLayer = null, GraphicsLayer graphicsLayer = null) { MarkLayer = markLayer; markLayer.EnablePolymericMark = false; GraphicsLayer = graphicsLayer; GDBName = "world"; GDBSvrName = "MapGisLocal"; Password = ""; User = ""; NetLayerName = "武汉道路网"; InitializeComponent(); dialogPanel1.OnClose += new RoutedEventHandler(Close); }
public void retry() { iter = 0; simtype = 1; MarkLayer.ClearDisposeChildren(); ConnectLayer.ClearDisposeChildren(); externalMarks.Clear(); Array.Clear(ACPressing, 0, ACPressing.Length); currentAllMarkCount = allMarkCount; currentAllLongMarkCount = allLongMarkCount; Array.Copy(markCounts, currentMarkCounts, markCounts.Length); MarkLayer.SetDefault(); ConnectLayer.SetDefault(); }
string VIAPoints = "";//路径点坐标 public netAnalyse(VectorLayerBase VectObj, MarkLayer markLayer, GraphicsLayer graphicsLayer) { MarkLayer = markLayer; markLayer.EnablePolymericMark = false; GraphicsLayer = graphicsLayer; GDBName = "test201"; GDBSvrName = "MapGisLocal"; Password = ""; User = ""; NetLayerName = "道路网"; InitializeComponent(); dialogPanel1.OnClose += new RoutedEventHandler(Close); this.VectorObj = VectObj; }
private void StartPntAdd2(MarkLayer markLayer, IMark mark, Point logicPnt) { m_barrierMark.Add(mark); m_barrierDots += logicPnt.X + "," + logicPnt.Y + ","; IMSMark markPnt = new IMSMark(new Image() { Source = new BitmapImage(new Uri("../images/mark/v0.png", UriKind.Relative)) }) { EnableAnimation = false }; MarkLayer.ManuallyAddMarkObj = markPnt; MarkLayer.ManuallyAddMarkOverCallback = new ManuallyAddMarkDelegate(StartPntAdd2); }
void ClearRoad() { if (m_road != null && GraphicsLayer != null) { GraphicsLayer.RemoveGraphics(m_road); m_road = null; } if (MarkLayer != null) { for (int i = 0; i < m_stopList.Count; i++) { MarkLayer.RemoveMark(m_stopList[i]); } m_stopList.Clear(); } }
private void image_marker1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { if (this.MapContainer == null) { MessageBox.Show("MapContainer属性为空,不能继续操作!"); return; } if (this.m_markLayer == null) { this.m_markLayer = new MarkLayer(); this.MapContainer.AddChild(this.m_markLayer); } Image targetimg = sender as Image; if (this.m_marker == null) { Image img = new Image(); img.Source = targetimg.Source; ContextMenu menu = new ContextMenu(); MenuItem del = new MenuItem(); del.Header = "删除"; del.Click += new RoutedEventHandler(del_Click); menu.Items.Add(del); MenuItem edit = new MenuItem(); edit.Header = "编辑"; edit.Click += new RoutedEventHandler(edit_Click); menu.Items.Add(edit); ContextMenuService.SetContextMenu((DependencyObject)img, menu); this.m_marker = new IMSMark(img); this.m_marker.CoordinateType = CoordinateType.Logic; this.m_marker.X = this.MapContainer.CenPntLogCoor.X; this.m_marker.Y = this.MapContainer.CenPntLogCoor.Y; this.textBox_markerx.Text = m_marker.X.ToString(); this.textBox_markery.Text = m_marker.Y.ToString(); this.m_marker.EnableDrag = true; this.m_markLayer.AddMark(this.m_marker); this.m_marker.MarkDragOverCallback = new MarkDragOverDelegate(onDragEnd); } else { ((Image)this.m_marker.MarkControl).Source = targetimg.Source; } this.image_marker.Source = targetimg.Source; e.Handled = true; }
/** * 设置测量类型 */ private void setMeasureType() { if (this.m_graphicsLayer == null) { MessageBox.Show("m_graphicsLayer为空,请赋值!", "提示", MessageBoxButton.OK); return; } this.m_mapContainer = this.m_graphicsLayer.MapContainer as IMSMap; clearMeasurePnts(null, null, null); if (mymarklayer == null) { mymarklayer = new MarkLayer(); this.m_mapContainer.AddChild(mymarklayer); } this.m_graphicsLayer.Drawing += new DrawingEventHandler(addMeasurePoint); this.m_graphicsLayer.DrawingTypeChange += new DrawingTypeChangeEventHandler(typeChange); this.m_graphicsLayer.DrawingOver += new DrawingEventHandler(reDrawMeasurePnts); this.m_mapContainer.MapOperTypeChange += new IMSMapEventHandler(onOperTypeChange); }
private void ShowMarker(object obj) { //显示标记 if (this.m_markLayer == null) { this.m_markLayer = new MarkLayer(); this.MapContainer.AddChild(this.m_markLayer); } if (this.m_posMarker == null) { Image img = new Image(); img.Source = new BitmapImage(new Uri("images/mark/marker2/image2/p1.png",UriKind.Relative)); img.Width = 40; img.Height = 40; this.m_posMarker = new IMSMark(img); this.m_posMarker.CoordinateType = CoordinateType.Logic; this.m_posMarker.X = this.PLon; this.m_posMarker.Y = this.PLat; this.m_markLayer.AddMark(this.m_posMarker); } else { this.m_posMarker.X = this.PLon; this.m_posMarker.Y = this.PLat; } //居中显示标记 if (this.checkBox2.IsChecked.Value) { Point pnt = this.MapContainer.LogicToScreen(this.PLon,this.PLat); if (Math.Abs(pnt.X - this.MapContainer.CenPntScrCoor.X) > 10 || Math.Abs(pnt.Y - this.MapContainer.CenPntScrCoor.Y)>10) { this.MapContainer.PanTo(PLon, PLat); return; } } if (!m_posMarker.IsInMapViewBound) { this.MapContainer.PanTo(PLon, PLat); } }
private void OnSubmit(object sender, UploadStringCompletedEventArgs e) { ClearRoad(); roadReslut.Blocks.Clear(); if (e.Error != null) { MessageBox.Show("分析失败,错误原因为:" + e.Error.Message, "提示", MessageBoxButton.OK); return; } try { if (e.Result.IndexOf("COperResult") > -1) { COperResult res = VectorObj.GetObject(e, typeof(COperResult)) as COperResult; MessageBox.Show(res.ErrorInfo, "提示", MessageBoxButton.OK); return; } CPathAnalyzeResult obj = _spatial.OnNetAnalyse(e); if (obj == null || obj.Paths == null) { return; } CNetPath path = obj.Paths[0]; int edgeNum = path.Edges.Length; Paragraph myParagraph = new Paragraph(); myParagraph.Inlines.Add(new Run() { Text = "1.从起点出发" }); Bold bold; IMSMark mark; StackPanel panel; for (int i = 0; i < edgeNum; i++) { CNetEdge edge = path.Edges[i]; if (i != 0) { myParagraph.Inlines.Add(new Run() { Text = (i + 1).ToString() + "." }); } myParagraph.Inlines.Add(new Run() { Text = "经" }); bold = new Bold() { Foreground = new SolidColorBrush(Colors.Red) }; bold.Inlines.Add(edge.FieldValus[2]); myParagraph.Inlines.Add(bold); if (i != edgeNum - 1) { myParagraph.Inlines.Add(new Run() { Text = "到达" }); bold = new Bold() { Foreground = new SolidColorBrush(Colors.Red) }; bold.Inlines.Add(path.Nodes[i + 1].FieldValus[0] + "\n"); myParagraph.Inlines.Add(bold); } else { myParagraph.Inlines.Add(new Run() { Text = "到达终点" }); } if (GraphicsLayer != null) { if (m_road == null) { m_road = new IMSPolyline(CoordinateType.Logic); m_road.Shape.Stroke = new SolidColorBrush(Colors.Red); GraphicsLayer.AddGraphics(m_road); } for (int j = 0; j < edge.Dots.Length; j++) { m_road.Points.Add(new Point(edge.Dots[j].x, edge.Dots[j].y)); } panel = new StackPanel() { Orientation = Orientation.Horizontal }; panel.Children.Add(new Image() { Source = new BitmapImage(new Uri("../images/bus/stop.png", UriKind.Relative)) }); panel.Children.Add(new TextBlock() { Text = edge.FieldValus[2] }); mark = new IMSMark(panel, CoordinateType.Logic, MarkLayer) { EnableAnimation = false, EnableDrag = false }; mark.X = edge.Dots[edge.Dots.Length / 2].x; mark.Y = edge.Dots[edge.Dots.Length / 2].y; MarkLayer.AddMark(mark); m_stopList.Add(mark); } } m_road.Draw(); roadReslut.Blocks.Add(myParagraph); radioButton1.IsChecked = false; radioButton2.IsChecked = false; } catch (Exception ex) { MessageBox.Show(ex.Message, "提示", MessageBoxButton.OK); } }
public void Update(float time, bool[] b, bool[] released) { if (!initialized) { return; } ReadPpdData(time, SpeedScale * EventManager.BPM); ReadExternalPpdData(time); Logger.Instance.AddLog("Time:{0}, pressed:{1}, released:{2}", time, String.Join(",", b.Select(v => v ? "1" : "0").ToArray()), String.Join(",", released.Select(v => v ? "1" : "0").ToArray())); foreach (Mark mk in MarkLayer.Children.Reverse()) { if (removeMarks.Contains(mk)) { continue; } var exmk = mk as ExMarkBase; var results = new MarkResults(); int soundType = -1; bool remove = false; var isAuto = false; switch (AutoMode) { case AutoMode.All: isAuto = true; break; case AutoMode.ExceptSlide: isAuto = !mk.IsScratch; break; } if (exmk != null) { remove = exmk.ExUpdate(EventManager.GetCorrectTime(time, mk.Time), SpeedScale * EventManager.BPM, ref b, ref released, results, isAuto, ref soundType, CreateEffect ); if (isAuto) { if (soundType >= 0 && soundType < 10) { var index = randomChangeManager.Invert(soundType); if (PlaySound != null) { PlaySound.Invoke(index, true); } } else if (soundType >= 10) { var index = randomChangeManager.Invert(soundType - 10); if (StopSound != null) { StopSound.Invoke(index, false); } if (EventManager.GetReleaseSound(index) && PlaySound != null) { PlaySound.Invoke(index, false); } } } else { //manual if (exmk.IsScratch && exmk.IsLong && soundType >= 0 && soundType < 10) { var index = randomChangeManager.Invert(soundType); if (PlaySound != null) { PlaySound.Invoke(index, false); } } else { var index = randomChangeManager.Invert(soundType); if (EventManager.GetReleaseSound(index) && PlaySound != null) { PlaySound.Invoke(index, false); } } } } else { remove = mk.Update(EventManager.GetCorrectTime(time, mk.Time), SpeedScale * EventManager.BPM, ref b, results, isAuto, ref soundType, CreateEffect ); if (isAuto) { if (soundType != -1) { var index = randomChangeManager.Invert(soundType); if (PlaySound != null) { PlaySound.Invoke(index, false); } } } } if (results[EffectType.Cool] || results[EffectType.Fine]) { if (ACPressing[(int)mk.ButtonType] != null) { OnPressingButton(mk.ButtonType, false); for (int i = 0; i < ACPressing.Length; i++) { if (ACPressing[i] != null) { AddToRemove(ACPressing[i]); } } Array.Clear(ACPressing, 0, ACPressing.Length); } if (ChangeCombo != null) { ChangeCombo.Invoke(true, mk.Position); } } if (results[EffectType.Pressing]) { // 同時にHoldが始まったときに2個目ので1個目のを消す if (ACPressing[(int)mk.ButtonType] != null && ACPressing[(int)mk.ButtonType] != mk) { OnPressingButton(mk.ButtonType, false); for (int i = 0; i < ACPressing.Length; i++) { if (ACPressing[i] != null) { AddToRemove(ACPressing[i]); } } Array.Clear(ACPressing, 0, ACPressing.Length); } if (OnPressingButton(mk.ButtonType, true)) { for (int i = 0; i < ACPressing.Length; i++) { if (ACPressing[i] != null) { AddToRemove(ACPressing[i]); } } Array.Clear(ACPressing, 0, ACPressing.Length); } ACPressing[(int)mk.ButtonType] = exmk; RemoveFromConnection(exmk); } if (results[EffectType.PressReleased]) { OnPressingButton(mk.ButtonType, false); for (int i = 0; i < ACPressing.Length; i++) { if (ACPressing[i] != null) { AddToRemove(ACPressing[i]); } } Array.Clear(ACPressing, 0, ACPressing.Length); } if (results[EffectType.Slide]) { var slideExMark = exmk as SlideExMark; for (var i = slideExMark.ProcessedPressingFrames; i < slideExMark.PressingFrames; i++) { var position = slideExMark.GetPressedSlidePosition(i + 1); if (slideExMark.IsMaxSlide && (i + 1) == slideExMark.ExCount) { // do nothing for max slide } else { var score = 10 * (i + 1); Slide?.Invoke(slideExMark, position, score, exmk.IsRight); } } slideExMark.ProcessedPressingFrames = slideExMark.PressingFrames; } if (results[EffectType.Safe] || results[EffectType.Sad] || results[EffectType.Worst]) { if (ChangeCombo != null) { ChangeCombo.Invoke(false, mk.Position); } } if (results[EffectType.Cool] || results[EffectType.Fine] || results[EffectType.Safe] || results[EffectType.Sad] || results[EffectType.Worst]) { if (EvaluateCount != null) { EvaluateCount.Invoke(results.First, false); } } if (remove) { if (exmk is SlideExMark && ((SlideExMark)exmk).IsMaxSlide) { var slideExMark = ((SlideExMark)exmk); var score = 1000 + 10 * slideExMark.ExCount; var position = slideExMark.GetPressedSlidePosition(slideExMark.ExCount); MaxSlide?.Invoke(slideExMark, position, score, exmk.IsRight); } AddToRemove(mk); } } foreach (Mark mk in removeMarks) { MarkLayer.RemoveChild(mk); mk.Dispose(); } if (MarkLayer.ChildrenCount > 0 && AutoMode == AutoMode.None) { for (int i = 0; i < 10; i++) { int iter = MarkLayer.ChildrenCount - 1; while (b[i] && iter >= 0) { var mk = MarkLayer[iter] as Mark; if (mk is ExMarkBase exmk && exmk.ExMarkState != ExMarkBase.ExState.Waiting) { iter--; continue; } var eval = mk.Evaluate(time); if (eval == EffectType.None) { iter--; continue; } Action proc = () => { b[i] = false; ChangeCombo?.Invoke(false, mk.Position); EvaluateCount.Invoke(eval, true); mk_ChangeMarkEvaluate(mk, eval, true, false, mk.Position); MarkLayer.RemoveChild(mk); RemoveFromConnection(mk); mk.Dispose(); }; if (scriptManager.ProcessMissPressManager.Process(mk, (MarkType)i, out bool isMissPress)) { if (isMissPress) { proc(); break; } } else if (mk.NoteType == NoteType.AC || (mk.NoteType == NoteType.ACFT && !mk.IsScratch)) { proc(); break; } iter--; } } } removeMarks.Clear(); Update(); }
private void cal(MarkLayer markLayer, IMark mark, Point logicPnt) { this.markLayer.RemoveMark(mark); }
public BusRoad(MarkLayer MarkLayer, GraphicsLayer GraphicsLayer) { this.MarkLayer = MarkLayer; this.GraphicsLayer = GraphicsLayer; }