Изменение расположения узлов из графика и события мыши с помощью GraphSharp
Я использую GraphSharp для построения некоторых графиков. Код, который я использую, создает вершину с ее именами (см. Это изображение: http://postimg.org/image/tn6km08an/).
Что я хочу сделать, это: "скрыть" имя узлов и изменить расположение вершин на круги, а не на имена (что-то вроде этого: ).
Кроме того, я хочу показать имя узла (имена из первого img), когда указатель мыши находится над узлом.
Является ли это возможным?
Вот мой код:
XAML:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:graphsharp="clr-namespace:GraphSharp.Controls;assembly=GraphSharp.Controls"
xmlns:zoom="clr-namespace:WPFExtensions.Controls;assembly=WPFExtensions"
Title="1-Step Network"
Height="350"
Width="525"
x:Name="root">
<Grid>
<zoom:ZoomControl>
<graphsharp:GraphLayout x:Name="graphLayout"
Graph="{Binding ElementName=root,Path=GraphToVisualize}"
LayoutAlgorithmType="ISOM"
OverlapRemovalAlgorithmType="FSA"
HighlightAlgorithmType="Simple"/>
</zoom:ZoomControl>
</Grid>
.Cs
public partial class MainWindow : Window
{
public IBidirectionalGraph<object, IEdge<object>> _graphToVisualize;
//public IUndirectedGraph<object,IEdge<object>> _graphToVisualize;
public IBidirectionalGraph<object, IEdge<object>> GraphToVisualize
//public IUndirectedGraph<object, IEdge<object>> GraphToVisualize
{
get { return _graphToVisualize; }
}
public MainWindow(int[,] matrix, string[] names)
{
CreateGraphToVisualize(matrix, names);
InitializeComponent();
}
public void CreateGraphToVisualize(int[,] matrix, string[] names)
{
var g = new BidirectionalGraph<object, IEdge<object>>();
//var g=new UndirectedGraph<object, IEdge<object>>();
//add the vertices do the graph
string[] vertices = new string[matrix.GetLength(0)];
for (int i = 0; i < matrix.GetLength(0); i++)
{
vertices[i] = names[i];
g.AddVertex(vertices[i]);
}
/*add some edges to the graph
g.AddEdge(new Edge<object>(vertices[0], vertices[1]));
g.AddEdge(new Edge<object>(vertices[1], vertices[2]));
g.AddEdge(new Edge<object>(vertices[2], vertices[3]));
g.AddEdge(new Edge<object>(vertices[3], vertices[1]));
g.AddEdge(new Edge<object>(vertices[1], vertices[4]));*/
for (int i = 0; i < matrix.GetLength(0); i++)
{
for (int j = 0; j < matrix.GetLength(1); j++)
{
if (i == j) break;
if(matrix[i,j]==1) g.AddEdge(new Edge<object>(vertices[i], vertices[j]));
}
}
_graphToVisualize = g;
}
}
Большое спасибо.