Example #1
0
        bool isOver; //指定状態


        /**********************↑ 描画用変数 ↑**********************/





        /********************↓ コンストラクタ ↓********************/


        /// <summary>
        /// 
        /// </summary>
        public EdgeView()
        {
            vertex1 = new VertexView();
            vertex2 = new VertexView();
            Pen = new Pen(Color.Black, 3);
            isSelect = false;
            isOver = false;
        }
Example #2
0
 /// <summary>
 /// 辺の両端の頂点を指定して初期化します。
 /// </summary>
 /// <param name="vtx1">第1端点</param>
 /// <param name="vtx2">第2端点</param>
 public EdgeView(VertexView vtx1, VertexView vtx2)
 {
     vertex1 = vtx1;
     vertex2 = vtx2;
     vertex1.AddNeighbor(vertex2);
     vertex2.AddNeighbor(vertex1);
     Pen = new Pen(Color.Black, 3);
     isSelect = false;
     isOver = false;
 }
        /********************↑ コンストラクタ ↑********************/





        /***********************↓ 基本処理 ↓***********************/


        /// <summary>
        /// オブジェクトを複製します。
        /// </summary>
        public object Clone()
        {
            VertexView vtx = new VertexView(id);
            vtx.SetColor(this.color);
            vtx.SetPosition(this.positionX, this.positionY);

            return vtx;
        }
Example #4
0
 /// <summary>
 /// Edge の頂点1つの座標を Vertex インスタンスで指定して設定します。
 /// </summary>
 /// <param name="index">頂点番号(VERTEX_FIRST or VERTEX_SECOND)</param>
 /// <param name="vtx">設定したい Vertex</param>
 public void SetEdgeVertex(int index, VertexView vtx)
 {
     if (index == VERTEX_FIRST)
         vertex1 = vtx;
     else if (index == VERTEX_SECOND)
         vertex2 = vtx;
 }
        /// <summary>
        /// Graph データの読込処理をします。
        /// </summary>
        /// <param name="reader">BinaryReader</param>
        public void Load(BinaryReader reader)
        {
            int vNum = reader.ReadInt32();
            int eNum = reader.ReadInt32();
            VertexView Vtemp;

            for (int i = 0; i < vNum; i++)
            {
                Vtemp = new VertexView();
                Vtemp.Load(reader);
                vertex.Add(Vtemp);
            }

            VertexView temp1, temp2;

            for (int i = 0; i < eNum; i++)
            {
                temp1 = (VertexView)GetVertexIdOf(reader.ReadInt32());
                temp2 = (VertexView)GetVertexIdOf(reader.ReadInt32());
                edge.Add(new EdgeView(temp1, temp2));
            }
        }
 /// <summary>
 /// Graph に辺を追加します。
 /// </summary>
 /// <param name="vtx1">第1頂点</param>
 /// <param name="vtx2">第2頂点</param>
 public void AddEdge(VertexView vtx1, VertexView vtx2)
 {
     edge.Add(new EdgeView(vtx1, vtx2));
 }
 /// <summary>
 /// 指定した頂点に接続する辺をすべて削除します。
 /// </summary>
 /// <param name="vtx">頂点</param>
 private void RemoveEdgeOfVertex(VertexView vtx)
 {
     for (int i = 0; i < edge.Count; i++)
         if (edge[i].CheckContain(vtx))
             RemoveEdgeAt(i--);
 }