Как поставить стрелочки на ребрах ориентированного графа?

Мне необходимо графически отобразить граф, введенный матрицей смежности. Граф ориентированный. Можно как-то поставить стрелочки на линиях ?

Я пыталась сделать иначе. Я рисовала линию с цветным градиентом, зеленый-начало, красный-конец. И все бы не плохо, но градиент виден не на всех линиях,только на тех,что длиннее. Код внизу.

Может,есть какие-то еще варианты? Готовые библиотеки использовать запретили...

     for(int i=0;i<dataGridView1.RowCount;i++)
        {
            for(int j=0;j<dataGridView1.ColumnCount;j++)
            {
                if(Convert.ToInt32(dataGridView1.Rows[i].Cells[j].Value)==1)
                    gr.DrawLine(new Pen(new System.Drawing.Drawing2D.LinearGradientBrush(new Point(Convert.ToInt32(X[i]), Convert.ToInt32(Y[i])), new Point(Convert.ToInt32(X[j]),Convert.ToInt32(X[j])), Color.Green, Color.Red), 3), new Point(Convert.ToInt32(X[i]), Convert.ToInt32(Y[i])), new Point(Convert.ToInt32(X[j]), Convert.ToInt32(Y[j])));
                else
                {
                    continue;
                }
            }
        }

X и Y-списки с координатами точек


Ответы (1 шт):

Автор решения: default locale

У класса Pen есть свойство EndCap, с помощью которого можно задать стрелочку в конце линии:

//создаем Pen
using(var pen = new Pen....) 
{ 
    //задаем стрелочку
    pen.EndCap = System.Drawing.Drawing2D.LineCap.ArrowAnchor; 
    //рисуем линию
    gr.DrawLine(pen, 
        Convert.ToInt32(X[i]), 
        Convert.ToInt32(Y[i]), 
        Convert.ToInt32(X[j]), 
        Convert.ToInt32(Y[j])
    ); 
}

→ Ссылка