How to create and connect custom user buttons/controls with lines using windows forms

后端 未结 2 1290
醉话见心
醉话见心 2020-11-22 13:18

I am trying to create some custom buttons or user controls as shown in the proposed GUI. The functionality should be as follows:

The graphs or configurations are cr

2条回答
  •  感情败类
    2020-11-22 13:45

    I'm guessing this is a graph type problem. The nodes are the rooms and the edges are the lines that connect the rooms. You can introduce another class (say Connection class) that describes how nodes are connected to edges. For example, your hall connects to a bedroom, not necessarily using a straight line. The Graphics.DrawBezier allows you to draw curved lines, but requires an array of points. This is where the the Connection class comes in. Some code may help...

       class Room
       {
         public Room(String name, Point location);
         public void Draw(Graphics g);
       }
    
       class Connection
       {
         public void Add(Point ptConnection);
         public void Add(Point[] ptConnection);
    
         // Draw will draw a straight line if only two points or will draw a bezier curve
         public void Draw(Graphics g);
       }
    
       class House // basically a graph
       {
         public void Add(Room room);
         public void AddRoomConnection(Room r1, Room r2, Connection connector);
    
         // draw, draw each room, then draw connections.
         public void Draw(Graphics g);
       }
    
       void Main()
       {
          House myHouse = new House();
          Room hall = new Room("Hall", new Point(120,10);
          Room bedroom1 = new Room("Bedroom1", Point(0, 80));
          Connection cnHallBedroom = new Connection();
          cn.Add(new Point());  // add two points to draw a line, 3 or more points to draw a curve.
          myHouse.AddRoomConnection(hall, bedroom1, cnHallBedroom);
       }
    

    This is basic approach, maybe not the best but might serve as a starting point.

提交回复
热议问题