void dg_Area_Drop(object sender, DragEventArgs e) { if (!e.Data.GetDataPresent(typeof(object))) { return; } //how to get dragged data by its type var pos = dg_zoomctrl.TranslatePoint(e.GetPosition(dg_zoomctrl), dg_Area); var data = new DataVertex(); ThemedDataStorage.FillDataVertex(data); dg_Area.LogicCore.Graph.AddVertex(data); var vc = new VertexControl(data); dg_Area.AddVertex(data, vc); GraphAreaBase.SetX(vc, pos.X); GraphAreaBase.SetY(vc, pos.Y, true); /*if (dg_Area.VertexList.Count() == 1) * { * var of = VisualTreeHelper.GetOffset(vc); * const int offset = 400; * dg_zoomctrl.ZoomTo(new Rect(of.X - offset, of.Y - offset, vc.ActualWidth + offset * 2, vc.ActualHeight + offset * 2)); * } * else dg_zoomctrl.ZoomToFill();*/ }
void dg_Area_Drop(object sender, DragEventArgs e) { if (!e.Data.GetDataPresent(typeof(object))) { return; } //how to get dragged data by its type var pos = dg_zoomctrl.TranslatePoint(e.GetPosition(dg_zoomctrl), dg_Area); var data = ThemedDataStorage.FillDataVertex(new DataVertex()); var vc = new VertexControl(data); vc.SetPosition(pos); dg_Area.AddVertexAndData(data, vc); }
void dg_addvertex_Click(object sender, RoutedEventArgs e) { var data = ThemedDataStorage.FillDataVertex(new DataVertex()); dg_Area.AddVertexAndData(data, new VertexControl(data)); //we have to check if there is only one vertex and set coordinates manulay //because layout algorithms skip all logic if there are less than two vertices if (dg_Area.VertexList.Count == 1) { dg_Area.VertexList.First().Value.SetPosition(0, 0); dg_Area.UpdateLayout(); //update layout to update vertex size } else { dg_Area.RelayoutGraph(true); } dg_zoomctrl.ZoomToFill(); }
private void tg_but_randomgraph_Click(object sender, RoutedEventArgs e) { var graph = ShowcaseHelper.GenerateDataGraph(ShowcaseHelper.Rand.Next(10, 20)); foreach (var item in graph.Vertices) { ThemedDataStorage.FillDataVertex(item); } foreach (var item in graph.Edges) { item.ToolTipText = string.Format("{0} -> {1}", item.Source.Name, item.Target.Name); } //TIP: trick to disable zoomcontrol behaviour when it is performing fill animation from top left zoomed corner //instead we will fill-animate from maximum zoom distance //tg_zoomctrl.Zoom = 0.01; //disable zoom control auto fill animation by setting this value tg_Area.GenerateGraph(graph, tg_edgeMode.SelectedIndex == 0); if (tg_Area.LogicCore.AsyncAlgorithmCompute) { tg_loader.Visibility = Visibility.Visible; } }