public ArborViewer() { InitializeComponent(); // repulsion - отталкивание, stiffness - тугоподвижность, friction - сила трения fSystem = new ArborSystemEx(10000.0f, 500.0f /*1000.0f*/, 0.1f, this); fSystem.SetViewSize((int)Width, (int)Height); fSystem.AutoStop = true; fSystem.Graph = new Graph(); fDragged = null; fEnergyDebug = false; fNodesDragging = false; //fDrawFont = new Font("Calibri", 9); //fLinePen = new Pen(Color.Gray, 1); //fLinePen.StartCap = LineCap.NoAnchor; //fLinePen.EndCap = LineCap.ArrowAnchor; fStrFormat = new CanvasTextFormat(); fStrFormat.HorizontalAlignment = CanvasHorizontalAlignment.Center; fStrFormat.VerticalAlignment = CanvasVerticalAlignment.Center; fStrFormat.FontSize = 9; fStrFormat.WordWrapping = CanvasWordWrapping.NoWrap; fBlackBrush = new SolidColorBrush(Colors.Black); fWhiteBrush = new SolidColorBrush(Colors.White); }
public void CreateArborGraph(IBaseWindow baseWin, int minGens, bool loneSuppress) { fBase = baseWin; try { fSys = new ArborSystemEx(1000, 1000, 0.1, null); //(10000, 1000, 0.1, this); fSys.SetViewSize(50, 50); fSys.OnStop += OnArborStop; using (ExtList <PatriarchObj> patList = PatriarchsMan.GetPatriarchsLinks( baseWin.Context, minGens, false, loneSuppress)) { int num = patList.Count; for (int i = 0; i < num; i++) { PatriarchObj pObj = patList[i]; if (!loneSuppress || pObj.HasLinks) { ArborNode node = fSys.AddNode(pObj.IRec.XRef); node.Data = pObj; } } for (int i = 0; i < num; i++) { PatriarchObj pat1 = patList[i]; foreach (PatriarchObj pat2 in pat1.Links) { fSys.AddEdge(pat1.IRec.XRef, pat2.IRec.XRef); } } } z = -50; fSys.Start(); } catch (Exception ex) { Logger.LogWrite("TreeVizControl.CreateArborGraph(): " + ex.Message); } }
private void AV_SizeChanged(object sender, SizeChangedEventArgs e) { fSystem.SetViewSize((int)e.NewSize.Width, (int)e.NewSize.Height); Invalidate(); }