TransWikia.com

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

Stack Overflow на русском Asked on August 30, 2021

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

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

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

     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-списки с координатами точек

One Answer

У класса 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])
    ); 
}

Answered by default locale on August 30, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP