Изменение расположения узлов из графика и события мыши с помощью 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;
    }
}

Большое спасибо.

0 ответов

Другие вопросы по тегам