示例#1
0
        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();*/
        }
 public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
 {
     if (!(value is int))
     {
         return(null);
     }
     return(ThemedDataStorage.GetEditorImageById((int)value));
 }
示例#3
0
        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);
        }
示例#4
0
        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();
        }
示例#5
0
        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;
            }
        }