3 回答
TA贡献1995条经验 获得超2个赞
ListBox.
“NodeXX”文本包含在 Thumb控件,该控件支持单击和拖动。 连接器也可以选择,并显示一个很好的动画,当他们是。 左面板允许当前选定对象的值的版本。 UI的功能与包含它的数据完全解耦。因此,所有这些节点和连接器都是简单的类。 int和 double可以从DB或其他数据源加载/保存的属性。 如果您不喜欢单击序列的完成方式,请绘制节点和连接器,这可以完全适应您的需要。 WPF规则。
编辑:
我加入了 SnapSpot进入等式。这些是你在节点周围看到的红色半圆,实际上是 Connector我们被绑在一起。 我还更改了 ConnectorDataTemplate使用 QuadraticBezierSegment基于 Connector.Start.Location,Connector.MidPoint, and Connector.End.Location
有一个小红方形 Thumb当您选择(单击)在 Connector,(在屏幕截图中可见),它将允许您移动 MidPoint曲线。 您还可以通过滚动鼠标轮来操作该值。 TextBoxes在左侧面板的“中间点”下。 “崩塌一切” CheckBox允许在大小框之间切换,如屏幕截图所示。 这个 SnapSpot我们有一个 OffsetXOffsetY在0到1之间,对应于它们相对于父级的位置。 Node..这些不限于4个,实际上可能是每个 Node.这个 ComboBoxes和 Buttons没有功能,但这只是创建相关属性和 在 Node类并将它们绑定到该类。
编辑2:
TA贡献1811条经验 获得超6个赞
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);
}TA贡献1811条经验 获得超4个赞
我擅长猜测规则:-)是的,我会让房间成为一个单一的用户控件,您可以在其中指定一个名称。当然,您可以对不同房间的用户控件进行子类化。我认为这里的秘诀是创建新的房间,并将它们添加到“家庭类”中。用户如何连接它们是完全开放的。单线,Bezier曲线等,这就是连接类的位置。两点是一条单线,多于两个点是一条曲线。就像我说的,这是一个基本的方法。
- 3 回答
- 0 关注
- 668 浏览
添加回答
举报
